Build: 周日 2025/11/02 20:25:30.66

This commit is contained in:
祀梦
2025-11-02 20:25:31 +08:00
commit d8ccce75d7
214 changed files with 6076 additions and 0 deletions
+1
View File
File diff suppressed because one or more lines are too long
+1
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
View File
@@ -0,0 +1 @@
import{_ as e,c as o,b as n,o as a}from"./app-CsTq_I9B.js";const r={};function l(s,t){return a(),o("div",null,[...t[0]||(t[0]=[n("p",null,"404 Not Found",-1)])])}const i=e(r,[["render",l]]),d=JSON.parse('{"path":"/404.html","title":"","lang":"zh-CN","frontmatter":{"layout":"NotFound"},"readingTime":{"minutes":0.01,"words":3},"git":{},"filePathRelative":null,"headers":[]}');export{i as comp,d as data};
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
View File
@@ -0,0 +1 @@
import{m as e}from"./mermaid.esm.min-vSKPWR4X.js";function a(c,t){c.accDescr&&t.setAccDescription?.(c.accDescr),c.accTitle&&t.setAccTitle?.(c.accTitle),c.title&&t.setDiagramTitle?.(c.title)}e(a,"populateCommonDb");export{a as c};
+1
View File
@@ -0,0 +1 @@
import{m,i as e}from"./mermaid.esm.min-vSKPWR4X.js";var r=m((o,t)=>{let a;return t==="sandbox"&&(a=e("#i"+o)),(t==="sandbox"?e(a.nodes()[0].contentDocument.body):e("body")).select(`[id="${o}"]`)},"getDiagramElement");export{r as m};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
View File
@@ -0,0 +1 @@
import{m as a,W as g,p as s}from"./mermaid.esm.min-vSKPWR4X.js";var m=a((t,i,e,o)=>{t.attr("class",e);let{width:h,height:r,x:w,y:x}=n(t,i);g(t,r,h,o);let d=$(w,x,h,r,i);t.attr("viewBox",d),s.debug(`viewBox configured: ${d} with padding: ${i}`)},"setupViewPortForSVG"),n=a((t,i)=>{let e=t.node()?.getBBox()||{width:0,height:0,x:0,y:0};return{width:e.width+i*2,height:e.height+i*2,x:e.x,y:e.y}},"calculateDimensionsWithPadding"),$=a((t,i,e,o,h)=>`${t-h} ${i-h} ${e} ${o}`,"createViewBox");export{m as y};
+1
View File
@@ -0,0 +1 @@
import{m as s}from"./mermaid.esm.min-vSKPWR4X.js";var t,e=(t=class{constructor(i){this.init=i,this.records=this.init()}reset(){this.records=this.init()}},s(t,"ImperativeState"),t);export{e as s};
+1
View File
@@ -0,0 +1 @@
import{m as l,z as n,q as d,f as h}from"./mermaid.esm.min-vSKPWR4X.js";var i=d(h()),y=l((s,t)=>{let r=s.append("rect");if(r.attr("x",t.x),r.attr("y",t.y),r.attr("fill",t.fill),r.attr("stroke",t.stroke),r.attr("width",t.width),r.attr("height",t.height),t.name&&r.attr("name",t.name),t.rx&&r.attr("rx",t.rx),t.ry&&r.attr("ry",t.ry),t.attrs!==void 0)for(let a in t.attrs)r.attr(a,t.attrs[a]);return t.class&&r.attr("class",t.class),r},"drawRect"),o=l((s,t)=>{let r={x:t.startx,y:t.starty,width:t.stopx-t.startx,height:t.stopy-t.starty,fill:t.fill,stroke:t.stroke,class:"rect"};y(s,r).lower()},"drawBackgroundRect"),p=l((s,t)=>{let r=t.text.replace(n," "),a=s.append("text");a.attr("x",t.x),a.attr("y",t.y),a.attr("class","legend"),a.style("text-anchor",t.anchor),t.class&&a.attr("class",t.class);let e=a.append("tspan");return e.attr("x",t.x+t.textMargin*2),e.text(r),a},"drawText"),g=l((s,t,r,a)=>{let e=s.append("image");e.attr("x",t),e.attr("y",r);let x=(0,i.sanitizeUrl)(a);e.attr("xlink:href",x)},"drawImage"),f=l((s,t,r,a)=>{let e=s.append("use");e.attr("x",t),e.attr("y",r);let x=(0,i.sanitizeUrl)(a);e.attr("xlink:href",`#${x}`)},"drawEmbeddedImage"),m=l(()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),"getNoteRect"),w=l(()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),"getTextObj");export{f as E,g as d,w as f,o as g,m as h,y as x,p as y};
+15
View File
@@ -0,0 +1,15 @@
import{m as e}from"./mermaid.esm.min-vSKPWR4X.js";var l=e(()=>`
/* Font Awesome icon styling - consolidated */
.label-icon {
display: inline-block;
height: 1em;
overflow: visible;
vertical-align: -0.125em;
}
.node .label-icon path {
fill: currentColor;
stroke: revert;
stroke-width: revert;
}
`,"getIconStyles");export{l as o};
+1
View File
@@ -0,0 +1 @@
import{V as t,Q as a,C as s,l as e}from"./chunk-P7EU7REX-CfiDT0A_.js";import"./chunk-ZZTKAOFA-DbYRDN8h.js";import"./chunk-6EQESGSB-D8MQkSSJ.js";import"./chunk-T244DUNM-ROicv7Wv.js";import{m as o}from"./mermaid.esm.min-vSKPWR4X.js";import"./app-CsTq_I9B.js";var c={parser:s,get db(){return new e},renderer:a,styles:t,init:o(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{c as diagram};
@@ -0,0 +1 @@
import{V as t,Q as a,C as s,l as e}from"./chunk-P7EU7REX-CfiDT0A_.js";import"./chunk-ZZTKAOFA-DbYRDN8h.js";import"./chunk-6EQESGSB-D8MQkSSJ.js";import"./chunk-T244DUNM-ROicv7Wv.js";import{m as o}from"./mermaid.esm.min-vSKPWR4X.js";import"./app-CsTq_I9B.js";var c={parser:s,get db(){return new e},renderer:a,styles:t,init:o(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{c as diagram};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+24
View File
@@ -0,0 +1,24 @@
import{c as B}from"./chunk-4KE642ED-D4iGNsEG.js";import{p as C}from"./treemap-KMMF4GRG-7ORZ52ND-CF-wf9MV.js";import{m as f,L as u,aN as P,W as z,p as w,H as W,U as F,j as S,e as D,$ as E,G as T,O as N,r as L,N as A}from"./mermaid.esm.min-vSKPWR4X.js";import"./chunk-OMTJKCYW-CCUNQPi0.js";import"./app-CsTq_I9B.js";var H=L.packet,m,$=(m=class{constructor(){this.packet=[],this.setAccTitle=W,this.getAccTitle=F,this.setDiagramTitle=S,this.getDiagramTitle=D,this.getAccDescription=E,this.setAccDescription=T}getConfig(){let t=u({...H,...N().packet});return t.showBits&&(t.paddingY+=10),t}getPacket(){return this.packet}pushWord(t){t.length>0&&this.packet.push(t)}clear(){A(),this.packet=[]}},f(m,"PacketDB"),m),R=1e4,j=f((e,t)=>{B(e,t);let r=-1,i=[],l=1,{bitsPerRow:n}=t.getConfig();for(let{start:a,end:s,bits:c,label:d}of e.blocks){if(a!==void 0&&s!==void 0&&s<a)throw new Error(`Packet block ${a} - ${s} is invalid. End must be greater than start.`);if(a??=r+1,a!==r+1)throw new Error(`Packet block ${a} - ${s??a} is not contiguous. It should start from ${r+1}.`);if(c===0)throw new Error(`Packet block ${a} is invalid. Cannot have a zero bit field.`);for(s??=a+(c??1)-1,c??=s-a+1,r=s,w.debug(`Packet block ${a} - ${r} with label ${d}`);i.length<=n+1&&t.getPacket().length<R;){let[p,o]=G({start:a,end:s,bits:c,label:d},l,n);if(i.push(p),p.end+1===l*n&&(t.pushWord(i),i=[],l++),!o)break;({start:a,end:s,bits:c,label:d}=o)}}t.pushWord(i)},"populate"),G=f((e,t,r)=>{if(e.start===void 0)throw new Error("start should have been set during first phase");if(e.end===void 0)throw new Error("end should have been set during first phase");if(e.start>e.end)throw new Error(`Block start ${e.start} is greater than block end ${e.end}.`);if(e.end+1<=t*r)return[e,void 0];let i=t*r-1,l=t*r;return[{start:e.start,end:i,label:e.label,bits:i-e.start},{start:l,end:e.end,label:e.label,bits:e.end-l}]},"getNextFittingBlock"),y={parser:{yy:void 0},parse:f(async e=>{let t=await C("packet",e),r=y.parser?.yy;if(!(r instanceof $))throw new Error("parser.parser?.yy was not a PacketDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");w.debug(t),j(t,r)},"parse")},M=f((e,t,r,i)=>{let l=i.db,n=l.getConfig(),{rowHeight:a,paddingY:s,bitWidth:c,bitsPerRow:d}=n,p=l.getPacket(),o=l.getDiagramTitle(),h=a+s,b=h*(p.length+1)-(o?0:a),k=c*d+2,g=P(t);g.attr("viewbox",`0 0 ${k} ${b}`),z(g,b,k,n.useMaxWidth);for(let[x,v]of p.entries())O(g,v,x,n);g.append("text").text(o).attr("x",k/2).attr("y",b-h/2).attr("dominant-baseline","middle").attr("text-anchor","middle").attr("class","packetTitle")},"draw"),O=f((e,t,r,{rowHeight:i,paddingX:l,paddingY:n,bitWidth:a,bitsPerRow:s,showBits:c})=>{let d=e.append("g"),p=r*(i+n)+n;for(let o of t){let h=o.start%s*a+1,b=(o.end-o.start+1)*a-l;if(d.append("rect").attr("x",h).attr("y",p).attr("width",b).attr("height",i).attr("class","packetBlock"),d.append("text").attr("x",h+b/2).attr("y",p+i/2).attr("class","packetLabel").attr("dominant-baseline","middle").attr("text-anchor","middle").text(o.label),!c)continue;let k=o.end===o.start,g=p-2;d.append("text").attr("x",h+(k?b/2:0)).attr("y",g).attr("class","packetByte start").attr("dominant-baseline","auto").attr("text-anchor",k?"middle":"start").text(o.start),k||d.append("text").attr("x",h+b).attr("y",g).attr("class","packetByte end").attr("dominant-baseline","auto").attr("text-anchor","end").text(o.end)}},"drawWord"),Y={draw:M},U={byteFontSize:"10px",startByteColor:"black",endByteColor:"black",labelColor:"black",labelFontSize:"12px",titleColor:"black",titleFontSize:"14px",blockStrokeColor:"black",blockStrokeWidth:"1",blockFillColor:"#efefef"},V=f(({packet:e}={})=>{let t=u(U,e);return`
.packetByte {
font-size: ${t.byteFontSize};
}
.packetByte.start {
fill: ${t.startByteColor};
}
.packetByte.end {
fill: ${t.endByteColor};
}
.packetLabel {
fill: ${t.labelColor};
font-size: ${t.labelFontSize};
}
.packetTitle {
fill: ${t.titleColor};
font-size: ${t.titleFontSize};
}
.packetBlock {
stroke: ${t.blockStrokeColor};
stroke-width: ${t.blockStrokeWidth};
fill: ${t.blockFillColor};
}
`},"styles"),K={parser:y,get db(){return new $},renderer:Y,styles:V};export{K as diagram};
+43
View File
@@ -0,0 +1,43 @@
import{c as I}from"./chunk-4KE642ED-D4iGNsEG.js";import{p as S}from"./treemap-KMMF4GRG-7ORZ52ND-CF-wf9MV.js";import{m as o,G as E,$ as F,e as z,j as P,U as G,H as R,aN as D,N,L as v,O as w,r as j,p as B,aT as H}from"./mermaid.esm.min-vSKPWR4X.js";import"./chunk-OMTJKCYW-CCUNQPi0.js";import"./app-CsTq_I9B.js";var x={showLegend:!0,ticks:5,max:null,min:0,graticule:"circle"},b={axes:[],curves:[],options:x},u=structuredClone(b),V=j.radar,W=o(()=>v({...V,...w().radar}),"getConfig"),C=o(()=>u.axes,"getAxes"),U=o(()=>u.curves,"getCurves"),_=o(()=>u.options,"getOptions"),Z=o(a=>{u.axes=a.map(t=>({name:t.name,label:t.label??t.name}))},"setAxes"),q=o(a=>{u.curves=a.map(t=>({name:t.name,label:t.label??t.name,entries:J(t.entries)}))},"setCurves"),J=o(a=>{if(a[0].axis==null)return a.map(e=>e.value);let t=C();if(t.length===0)throw new Error("Axes must be populated before curves for reference entries");return t.map(e=>{let r=a.find(i=>i.axis?.$refText===e.name);if(r===void 0)throw new Error("Missing entry for axis "+e.label);return r.value})},"computeCurveEntries"),K=o(a=>{let t=a.reduce((e,r)=>(e[r.name]=r,e),{});u.options={showLegend:t.showLegend?.value??x.showLegend,ticks:t.ticks?.value??x.ticks,max:t.max?.value??x.max,min:t.min?.value??x.min,graticule:t.graticule?.value??x.graticule}},"setOptions"),Q=o(()=>{N(),u=structuredClone(b)},"clear"),f={getAxes:C,getCurves:U,getOptions:_,setAxes:Z,setCurves:q,setOptions:K,getConfig:W,clear:Q,setAccTitle:R,getAccTitle:G,setDiagramTitle:P,getDiagramTitle:z,getAccDescription:F,setAccDescription:E},X=o(a=>{I(a,f);let{axes:t,curves:e,options:r}=a;f.setAxes(t),f.setCurves(e),f.setOptions(r)},"populate"),Y={parse:o(async a=>{let t=await S("radar",a);B.debug(t),X(t)},"parse")},tt=o((a,t,e,r)=>{let i=r.db,n=i.getAxes(),l=i.getCurves(),s=i.getOptions(),c=i.getConfig(),d=i.getDiagramTitle(),p=D(t),g=et(p,c),h=s.max??Math.max(...l.map(y=>Math.max(...y.entries))),m=s.min,$=Math.min(c.width,c.height)/2;at(g,n,$,s.ticks,s.graticule),rt(g,n,$,c),M(g,n,l,m,h,s.graticule,c),k(g,l,s.showLegend,c),g.append("text").attr("class","radarTitle").text(d).attr("x",0).attr("y",-c.height/2-c.marginTop)},"draw"),et=o((a,t)=>{let e=t.width+t.marginLeft+t.marginRight,r=t.height+t.marginTop+t.marginBottom,i={x:t.marginLeft+t.width/2,y:t.marginTop+t.height/2};return a.attr("viewbox",`0 0 ${e} ${r}`).attr("width",e).attr("height",r),a.append("g").attr("transform",`translate(${i.x}, ${i.y})`)},"drawFrame"),at=o((a,t,e,r,i)=>{if(i==="circle")for(let n=0;n<r;n++){let l=e*(n+1)/r;a.append("circle").attr("r",l).attr("class","radarGraticule")}else if(i==="polygon"){let n=t.length;for(let l=0;l<r;l++){let s=e*(l+1)/r,c=t.map((d,p)=>{let g=2*p*Math.PI/n-Math.PI/2,h=s*Math.cos(g),m=s*Math.sin(g);return`${h},${m}`}).join(" ");a.append("polygon").attr("points",c).attr("class","radarGraticule")}}},"drawGraticule"),rt=o((a,t,e,r)=>{let i=t.length;for(let n=0;n<i;n++){let l=t[n].label,s=2*n*Math.PI/i-Math.PI/2;a.append("line").attr("x1",0).attr("y1",0).attr("x2",e*r.axisScaleFactor*Math.cos(s)).attr("y2",e*r.axisScaleFactor*Math.sin(s)).attr("class","radarAxisLine"),a.append("text").text(l).attr("x",e*r.axisLabelFactor*Math.cos(s)).attr("y",e*r.axisLabelFactor*Math.sin(s)).attr("class","radarAxisLabel")}},"drawAxes");function M(a,t,e,r,i,n,l){let s=t.length,c=Math.min(l.width,l.height)/2;e.forEach((d,p)=>{if(d.entries.length!==s)return;let g=d.entries.map((h,m)=>{let $=2*Math.PI*m/s-Math.PI/2,y=L(h,r,i,c),A=y*Math.cos($),O=y*Math.sin($);return{x:A,y:O}});n==="circle"?a.append("path").attr("d",T(g,l.curveTension)).attr("class",`radarCurve-${p}`):n==="polygon"&&a.append("polygon").attr("points",g.map(h=>`${h.x},${h.y}`).join(" ")).attr("class",`radarCurve-${p}`)})}o(M,"drawCurves");function L(a,t,e,r){let i=Math.min(Math.max(a,t),e);return r*(i-t)/(e-t)}o(L,"relativeRadius");function T(a,t){let e=a.length,r=`M${a[0].x},${a[0].y}`;for(let i=0;i<e;i++){let n=a[(i-1+e)%e],l=a[i],s=a[(i+1)%e],c=a[(i+2)%e],d={x:l.x+(s.x-n.x)*t,y:l.y+(s.y-n.y)*t},p={x:s.x-(c.x-l.x)*t,y:s.y-(c.y-l.y)*t};r+=` C${d.x},${d.y} ${p.x},${p.y} ${s.x},${s.y}`}return`${r} Z`}o(T,"closedRoundCurve");function k(a,t,e,r){if(!e)return;let i=(r.width/2+r.marginRight)*3/4,n=-(r.height/2+r.marginTop)*3/4,l=20;t.forEach((s,c)=>{let d=a.append("g").attr("transform",`translate(${i}, ${n+c*l})`);d.append("rect").attr("width",12).attr("height",12).attr("class",`radarLegendBox-${c}`),d.append("text").attr("x",16).attr("y",0).attr("class","radarLegendText").text(s.label)})}o(k,"drawLegend");var it={draw:tt},st=o((a,t)=>{let e="";for(let r=0;r<a.THEME_COLOR_LIMIT;r++){let i=a[`cScale${r}`];e+=`
.radarCurve-${r} {
color: ${i};
fill: ${i};
fill-opacity: ${t.curveOpacity};
stroke: ${i};
stroke-width: ${t.curveStrokeWidth};
}
.radarLegendBox-${r} {
fill: ${i};
fill-opacity: ${t.curveOpacity};
stroke: ${i};
}
`}return e},"genIndexStyles"),nt=o(a=>{let t=H(),e=w(),r=v(t,e.themeVariables),i=v(r.radar,a);return{themeVariables:r,radarOptions:i}},"buildRadarStyleOptions"),lt=o(({radar:a}={})=>{let{themeVariables:t,radarOptions:e}=nt(a);return`
.radarTitle {
font-size: ${t.fontSize};
color: ${t.titleColor};
dominant-baseline: hanging;
text-anchor: middle;
}
.radarAxisLine {
stroke: ${e.axisColor};
stroke-width: ${e.axisStrokeWidth};
}
.radarAxisLabel {
dominant-baseline: middle;
text-anchor: middle;
font-size: ${e.axisLabelFontSize}px;
color: ${e.axisColor};
}
.radarGraticule {
fill: ${e.graticuleColor};
fill-opacity: ${e.graticuleOpacity};
stroke: ${e.graticuleColor};
stroke-width: ${e.graticuleStrokeWidth};
}
.radarLegendText {
text-anchor: start;
font-size: ${e.legendFontSize}px;
dominant-baseline: hanging;
}
${st(t,e)}
`},"styles"),ht={parser:Y,db:f,renderer:it,styles:lt};export{ht as diagram};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
View File
@@ -0,0 +1 @@
import{_ as e,c as t,o as a}from"./app-CsTq_I9B.js";const n={};function r(o,c){return a(),t("div")}const i=e(n,[["render",r]]),s=JSON.parse('{"path":"/blog/","title":"博客","lang":"zh-CN","frontmatter":{"lang":"zh-CN","title":"博客","gitInclude":[],"draft":true},"readingTime":{"minutes":0,"words":0},"git":{},"filePathRelative":null,"headers":[],"type":"blog"}');export{i as comp,s as data};
File diff suppressed because one or more lines are too long
+33
View File
@@ -0,0 +1,33 @@
import{_ as i,c as a,a as e,o as n}from"./app-CsTq_I9B.js";const l={};function h(t,s){return n(),a("div",null,[...s[0]||(s[0]=[e(`<h2 id="第一部分-区块链平台运维" tabindex="-1"><a class="header-anchor" href="#第一部分-区块链平台运维"><span>第一部分:区块链平台运维</span></a></h2><h3 id="第1题-完成-fisco-bcos-区块链系统部署并验证" tabindex="-1"><a class="header-anchor" href="#第1题-完成-fisco-bcos-区块链系统部署并验证"><span>第1题:完成 FISCO BCOS 区块链系统部署并验证</span></a></h3><p><strong>【要求】</strong></p><p>登录 Linux 服务器,完成节点部署、启动、将过程结果截图,保存至做答题并点击提交。</p><p><strong>【任务】</strong></p><p>登录 Linux 服务器,进入指定操作目录(/root/tools)基于开发部署工具 build_chain.sh 脚本在本地搭建一条 4 节点的 FISCO BCOS 链。起始端口号为:30300,20200,8545。将节点 2 的端口号改为 30500,20400,8675。确保搭建的区块链系统能正常运行,并将执行的命令和完整的命令执行结果截图保存至作答区并点击提交。具体任务如下:</p><p><strong>【参考答案】</strong></p><p>使用 build_chain.sh 脚本搭建 FISCO BCOS 链:</p><p>默认的 -v 会从网络中下载 FISCO BCOS,这里本地已经有了,比赛的时候肯定是断网的,这里直接调用本地的即可</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code class="language-shell"><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">bash</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> build_chain.sh</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> -l</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;"> &quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">127.0.0.1:4</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> -p</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> 30300,20200,8545</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> -e</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> ./fisco-bcos</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p><img src="https://image.simengweb.com/blog/competition/BRICS2025-ST-132/20250930201715_253_27.png" alt="配置默认单机4节点"> 在创建完成之后,当前目录会出现一个 nodes 文件夹,这里面就是我们的每个节点的具体配置信息等等</p><p>这里推荐下载一个 tree 用来查看目录结构</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code class="language-shell"><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">apt</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> install</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> tree</span></span>
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">tree</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> nodes</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><p></p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code class="language-"><span class="line"><span>nodes</span></span>
<span class="line"><span> 127.0.0.1</span></span>
<span class="line"><span> node0</span></span>
<span class="line"><span> ...</span></span>
<span class="line"><span> node1</span></span>
<span class="line"><span> ...</span></span>
<span class="line"><span> node2</span></span>
<span class="line"><span> ...</span></span>
<span class="line"><span> node3</span></span>
<span class="line"><span> ...</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p> node <code>conf/</code><code>log/</code><code>fisco-bcos/</code></p><p>2 30500,20400,8675</p><p><code>vim nodes/127.0.0.1/node2/config.ini</code></p><div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark has-diff vp-code"><code class="language-bash"><span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">[</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">rpc</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">]</span></span>
<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> channel_listen_ip</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">0.0.0.0</span></span>
<span class="line diff remove"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> channel_listen_port</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">20202</span></span>
<span class="line diff add"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> channel_listen_port</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">20400</span></span>
<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> jsonrpc_listen_ip</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">127.0.0.1</span></span>
<span class="line diff remove"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> jsonrpc_listen_port</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">8547</span></span>
<span class="line diff add"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> jsonrpc_listen_port</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">8675</span></span>
<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> disable_dynamic_group</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">false</span></span>
<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">[</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">p2p</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">]</span></span>
<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> listen_ip</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">0.0.0.0</span></span>
<span class="line diff remove"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> listen_port</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">30302</span></span>
<span class="line diff add"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> listen_port</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">30500</span></span>
<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> ;</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> nodes</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> to</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> connect</span></span>
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> node.0</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">=127.0.0.1:30300</span></span>
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> node.1</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">=127.0.0.1:30301</span></span>
<span class="line diff remove"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> node.2</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">=127.0.0.1:30302</span></span>
<span class="line diff add"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> node.2</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">=127.0.0.1:30500</span></span>
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> node.3</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">=127.0.0.1:30303</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>2 [p2p] <code>node.2</code> </p><p> <code>nodes/127.0.0.1/</code> <code>bash start_all.sh</code> </p><p><img src="https://image.simengweb.com/blog/competition/BRICS2025-ST-132/20250930205309_254_27.png" alt=""></p><p><code>ss -tuln | grep -E &#39;30500|20400|8675&#39;</code></p><p></p><div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code class="language-bash"><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">tcp</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> LISTEN</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;"> 0</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;"> 4096</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> 127.0.0.1:8675</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> 0.0.0.0:</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;">*</span></span>
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">tcp</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> LISTEN</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;"> 0</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;"> 4096</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> 0.0.0.0:30500</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> 0.0.0.0:</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;">*</span></span>
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">tcp</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> LISTEN</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;"> 0</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;"> 4096</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> 0.0.0.0:20400</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> 0.0.0.0:</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;">*</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p></p><ol><li><a href="https://fisco-doc.readthedocs.io/zh/latest/docs/installation.html" target="_blank" rel="noopener noreferrer"></a></li><li><a href="https://fisco-bcos-documentation.readthedocs.io/zh-cn/latest/docs/manual/build_chain.html" target="_blank" rel="noopener noreferrer">(build_chain.sh)</a></li></ol><h3 id="2-webase-node-manager" tabindex="-1"><a class="header-anchor" href="#2-webase-node-manager"><span>2WeBASE-Node-Manager</span></a></h3><p><strong></strong></p><p> Linux </p><p><strong></strong></p><p> linux /root/tools/webase</p><ol><li> WeBASE-Node-Manager </li><li> application.yml WeBASE-Node-Manager </li><li>使 WeBASE-Node-Manager </li><li>使 swagger API </li></ol><p><strong></strong></p><p> WeBASE-Front <code>dist/conf_template</code> <code>dist/conf</code></p><div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code class="language-bash"><span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;"># /home/simeng/blockchain/WeBASE-Front</span></span>
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">cp</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> -r</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> dist/conf_template</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> dist/conf</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><p> <code>nodes/{$ip}/sdk</code> <code>dist/conf</code> </p><div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code class="language-bash"><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">cp</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> ../nodes/127.0.0.1/sdk/</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;">*</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> ./dist/conf/</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p> : <code>vim dist/conf/application.yml</code></p><div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code class="language-bash"><span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p> JAVA_HOME <code>~/.bashrc</code></p><div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code class="language-bash"><span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">export</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> JAVA_HOME</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">/usr/lib/jvm/java-1.8.0-openjdk-amd64</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">&quot;</span></span>
<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">export</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> PATH</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">$JAVA_HOME</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">/</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">bin</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">:</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">$PATH</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><p></p><div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code class="language-bash"><span class="line"><span style="--shiki-light:#998418;--shiki-dark:#B8A965;">source</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> ~/.bashrc</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p> <code>dist</code> Solidity v0.8.11.js v0.8.11.js ,WSL2 Windows Windows </p><div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code class="language-bash"><span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">wget</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> https://github.com/WeBankBlockchain/WeBASELargeFiles/releases/download/v3.0.0/v0.8.11.js</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> -O</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> static/static/js/v0.8.11.js</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p> <code>bash start.sh</code> WeBASE-Node-Manager </p><div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code class="language-bash"><span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;"># /home/simeng/blockchain/WeBASE-Front/dist</span></span>
<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">bash</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> start.sh</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><p> localhostForwarding <a href="https://notes.simengweb.com/article/operate-wsl2/#%E7%BD%91%E7%BB%9C%E7%9B%B8%E5%85%B3%E9%85%8D%E7%BD%AE" target="_blank" rel="noopener noreferrer">WSL2</a>,localhost访WSL2 访<a href="http://localhost:5002/WeBASE-Front" target="_blank" rel="noopener noreferrer">http://localhost:5002/WeBASE-Front</a></p>`,49)])])}const p=i(l,[["render",h]]),k=JSON.parse('{"path":"/article/2025-BR-BRICS-BC-App-Develop-Op-Sample-Q_A/","title":"2025 - ","lang":"zh-CN","frontmatter":{"title":"2025 - ","createTime":"2025/09/30 19:57:14","permalink":"/article/2025-BR-BRICS-BC-App-Develop-Op-Sample-Q&A/"},"readingTime":{"minutes":3.72,"words":1117},"git":{"createdTime":1759303270000,"updatedTime":1761565115000,"contributors":[{"name":"si-meng-spec","username":"si-meng-spec","email":"simeng@simengweb.com","commits":2,"avatar":"https://avatars.githubusercontent.com/si-meng-spec?v=4","url":"https://github.com/si-meng-spec"},{"name":"","username":"","email":"3501646051@qq.com","commits":1,"avatar":"https://gravatar.com/avatar/6406a81eeddc359cf3d3ce018797689fc6d014ff06215c27d0210b42e8f5a8ab?d=retro"}]},"filePathRelative":"blog/competition/BRICS2025-ST-132.md","headers":[],"_e":"$2b$13$CnmbjqzZPll8mDk9AlqYFOVVv1xaipyql.Rk6pEL8ZXwc59rzqfqC","categoryList":[{"id":"126ac9","sort":10000,"name":"blog"},{"id":"83ee8d","sort":10002,"name":"competition"}]}');export{p as comp,k as data};
File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More