{"id":36787,"date":"2025-05-12T16:02:37","date_gmt":"2025-05-12T08:02:37","guid":{"rendered":"https:\/\/www.wsisp.com\/helps\/36787.html"},"modified":"2025-05-12T16:02:37","modified_gmt":"2025-05-12T08:02:37","slug":"%e5%8c%ba%e5%9d%97%e9%93%be%e4%bb%bf%e7%9c%9f%e5%b7%a5%e5%85%b7simblock%e4%bd%bf%e7%94%a8","status":"publish","type":"post","link":"https:\/\/www.wsisp.com\/helps\/36787.html","title":{"rendered":"\u533a\u5757\u94fe\u4eff\u771f\u5de5\u5177SimBlock\u4f7f\u7528"},"content":{"rendered":"<h3 id=\"vkScv\">1. Environment requirements<\/h3>\n<p id=\"u117d4192\">SimBlock \u53ef\u4ee5\u5728 Windows\u3001MacOS\u3001Ubuntu Linux \u6216\u4efb\u4f55\u652f\u6301 Java \u7684 Unix \u5e73\u53f0\u4e0a\u8fd0\u884c\u3002<\/p>\n<p id=\"u2b03e249\">\u5b83\u9700\u8981\u4ee5\u4e0b\u7248\u672c\u7684 JDK \u548c Gradle\u3002<\/p>\n<p id=\"ue42366c3\">\u8bf7\u6ce8\u610f&#xff0c;SimBlock \u7684\u4ed3\u5e93\u4e2d\u5305\u542b Gradle Wrapper&#xff0c;\u56e0\u6b64\u60a8\u4e5f\u53ef\u4ee5\u81ea\u52a8\u5b89\u88c5 Gradle&#xff08;\u6211\u4eec\u7a0d\u540e\u4f1a\u63d0\u5230&#xff09;\u3002<\/p>\n<table id=\"JiF6B\">\n<tbody>\n<tr>\n<td>\n<p id=\"u7a1b31ce\">Software<\/p>\n<\/td>\n<td>\n<p id=\"u78e72d77\">Version<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u0fcecdf8\">JDK<\/p>\n<\/td>\n<td>\n<p id=\"u8c79a04c\">1.8.0 or later<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u2540610b\">Gradle<\/p>\n<\/td>\n<td>\n<p id=\"ue37fbbe5\">5.1.1 or later<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3 id=\"2.-download\">2. \u4e0b\u8f7d<\/h3>\n<p id=\"u785c6ac9\">Download the SimBlock repository as a zip file from GitHub and unzip, or clone the repository.<\/p>\n<p id=\"u1bb9e235\">Release list: Releases \u00b7 dsg-titech\/simblock \u00b7 GitHub Command for clone: $ git clone git&#064;github.com:dsg-titech\/simblock.git<\/p>\n<p id=\"u9a4fefec\">\n<p id=\"u2e9d6b82\">\u4eceGitHub\u548cUnzip\u4e0b\u8f7dSimblock\u5b58\u50a8\u5e93\u4f5c\u4e3aZIP\u6587\u4ef6&#xff0c;\u6216\u514b\u9686\u5b58\u50a8\u5e93\u3002<\/p>\n<p id=\"u4192f61c\">\u53d1\u5e03\u5217\u8868&#xff1a;Releases \u00b7 dsg-titech\/simblock \u00b7 GitHub<\/p>\n<p id=\"ucce28c6e\">\u514b\u9686\u547d\u4ee4&#xff1a;$ git clone git&#064;github.com:dsg-titech\/simblock.git<\/p>\n<p id=\"ue04a7c8b\">\n<p id=\"u9820843e\">\u6211\u7684\u547d\u4ee4&#xff1a;<\/p>\n<li id=\"u71f2d71d\">wget https:\/\/github.com\/dsg-titech\/simblock\/archive\/refs\/tags\/v0.8.0.zip<\/li>\n<li id=\"uacd7fa03\">unzip v0.8.0.zip<\/li>\n<p id=\"ue5f83dcb\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"214\" id=\"u1b31478d\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/05\/20250512080234-6821ab1ab8ff0.png\" width=\"487\" \/><\/p>\n<h4 id=\"2-a.-directory-structure\">2-a. \u76ee\u5f55\u7ed3\u6784<\/h4>\n<p id=\"ub7f947ee\">The structure of the unzipped or cloned directory is as follows:&#xff08;\u89e3\u538b\u7f29\u6216\u8005\u514b\u9686\u540e\u7684\u76ee\u5f55\u7ed3\u6784\u5982\u4e0b\u6240\u793a&#xff09;<\/p>\n<p>simblock<br \/>\n&#043;&#8211; docs<br \/>\n&#043;&#8211; gradle<br \/>\n|   &#043;&#8211; wrapper<br \/>\n&#043;&#8211; simulator<br \/>\n    &#043;&#8211; src<br \/>\n        &#043;&#8211; dist<br \/>\n        |   &#043;&#8211; conf<br \/>\n        |   &#043;&#8211; out<br \/>\n        |       &#043;&#8211; graph<br \/>\n        &#043;&#8211; main<br \/>\n            &#043;&#8211; java<br \/>\n                &#043;&#8211; SimBlock<br \/>\n                    &#043;&#8211; &#8230;<br \/>\n                    : <\/p>\n<p id=\"ue3d5ab72\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"607\" id=\"ucab2c4c8\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/05\/20250512080234-6821ab1ac93eb.png\" width=\"609\" \/><\/p>\n<table id=\"wSBfj\">\n<tbody>\n<tr>\n<td>\n<p id=\"ue0418ffb\">Directory \u76ee\u5f55<\/p>\n<\/td>\n<td>\n<p id=\"u761d857f\">Description \u63cf\u8ff0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"uc43861a7\">docs<\/p>\n<\/td>\n<td>\n<p id=\"ua9935832\">Documents about SimBlock (e.g., user manual)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"ucf6d26da\">gradle\/wrapper<\/p>\n<\/td>\n<td>\n<p id=\"u35c49705\">For Gradle wrapper<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u81c0a9ef\">simulator\/src\/dist\/conf<\/p>\n<\/td>\n<td>\n<p id=\"ub8848bce\">Directory in which to place the files that simulator reads<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u37a65dd3\">simulator\/src\/dist\/out<\/p>\n<\/td>\n<td>\n<p id=\"uc823c79d\">Directory where files output by simulator are stored<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"ua3b383e4\">simulator\/src\/main\/java\/SimBlock<\/p>\n<\/td>\n<td>\n<p id=\"u6edc42f7\">Source codes<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3 id=\"3.-build\">3. Build<\/h3>\n<p id=\"u8e311287\">\u6b64\u540e&#xff0c;\u89e3\u538b\u7f29\u6216\u514b\u9686\u7684\u5b58\u50a8\u5e93\u7684\u6839\u76ee\u5f55\u7684\u540d\u79f0\u8868\u793a\u4e3a&lt;root_dir&gt;\u3002<\/p>\n<p id=\"uba7f3ba7\">\u9996\u5148&#xff0c;\u6253\u5f00\u4e00\u4e2a\u7ec8\u7aef\u8f6f\u4ef6&#xff08;\u4f8b\u5982xterm&#xff0c;\u547d\u4ee4\u63d0\u793a\u7b49&#xff09;&#xff0c;\u7136\u540e\u6765\u5230\u5230&lt;root_dir&gt;\u76ee\u5f55\u3002<\/p>\n<h4 id=\"3-a.-if-gradle-is-installed\" style=\"background-color:transparent\">3-a. \u5982\u679cGradle \u5df2\u5b89\u88c5<\/h4>\n<p id=\"u416f3e98\">You can build by the following Gradle command, if you have already installed Gradle.<\/p>\n<p id=\"uecc81626\">\u5982\u679c\u60a8\u5df2\u7ecf\u5b89\u88c5\u4e86Gradle&#xff0c;\u5219\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0bGradle\u547d\u4ee4\u8fdb\u884c\u6784\u5efa\u3002<\/p>\n<p id=\"u089294ef\">\u6ca1\u5b89\u88c5\u7684\u8bdd\u5b89\u88c5gradle<\/p>\n<p id=\"u44e271d2\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"573\" id=\"uecb93d6b\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/05\/20250512080234-6821ab1ae0e58.png\" width=\"1164\" \/><\/p>\n<p id=\"ue16de52f\">$ gradle build<\/p>\n<p id=\"u592a9700\">If successful, build directory will be created under &lt;ROOT_DIR&gt;\/simulator.<\/p>\n<p id=\"ub62db948\">\u5982\u679c\u6210\u529f&#xff0c;\u5c06\u5728&lt;ROOT_DIR&gt;\/simulator\u4e0b\u521b\u5efabuild\u76ee\u5f55\u3002<\/p>\n<p id=\"u0e6d621d\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"475\" id=\"udffe04a3\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/05\/20250512080235-6821ab1b314c9.png\" width=\"642\" \/><\/p>\n<p>&lt;ROOT_DIR&gt;<br \/>\n&#043;&#8211; simulator<br \/>\n    &#043;&#8211; build<br \/>\n        &#043;&#8211; classes<br \/>\n        &#043;&#8211; distributions<br \/>\n        &#043;&#8211; libs<br \/>\n        &#043;&#8211; scripts<br \/>\n        &#043;&#8211; tmp <\/p>\n<table id=\"dKxC9\">\n<tbody>\n<tr>\n<td>\n<p id=\"uf071a524\">Directory \u76ee\u5f55<\/p>\n<\/td>\n<td>\n<p id=\"ue8747857\">Description \u8bf4\u660e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u139b3163\">simulator\/build\/classes<\/p>\n<\/td>\n<td>\n<p id=\"u02137d8f\">Directory where built class files are stored<\/p>\n<p id=\"u687f554a\">\u5b58\u50a8\u6784\u5efa\u7c7b\u6587\u4ef6\u7684\u76ee\u5f55<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"ufc6b8d3d\">simulator\/build\/distributions<\/p>\n<\/td>\n<td>\n<p id=\"u00b63cf5\">Directory where distribution archive files (zip, tar) are stored<\/p>\n<p id=\"u6e9143be\">\u5b58\u50a8\u5206\u53d1\u5b58\u6863\u6587\u4ef6&#xff08;zip\u3001tar&#xff09;\u7684\u76ee\u5f55<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u259f0dda\">simulator\/build\/libs<\/p>\n<\/td>\n<td>\n<p id=\"u2f00f7b1\">Directory where jar files are stored<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u8d26b9d4\">simulator\/build\/scripts<\/p>\n<\/td>\n<td>\n<p id=\"ued2232e7\">Directory where startup scripts are stored<\/p>\n<p id=\"ub8fc3bec\">\u542f\u52a8\u811a\u672c\u7684\u76ee\u5f55<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p id=\"u1c153fe5\">Note that the startup scripts in simulator\/build\/scripts are generated for inclusion in the distribution archive; if you run the scripts with the directory structure as it is, an error will occur.<\/p>\n<p id=\"u0adb775b\">\u8bf7\u6ce8\u610f&#xff0c;simulator\/build\/scripts \u4e2d\u7684\u542f\u52a8\u811a\u672c\u662f\u4e3a\u4e86\u5305\u542b\u5728\u5206\u53d1\u5b58\u6863\u4e2d\u800c\u751f\u6210\u7684&#xff1b;\u5982\u679c\u6309\u539f\u6837\u8fd0\u884c\u76ee\u5f55\u7ed3\u6784\u7684\u811a\u672c&#xff0c;\u5c06\u51fa\u73b0\u9519\u8bef\u3002<\/p>\n<h4 id=\"3-b.-if-gradle-is-not-installed\">3-b. If Gradle is not installed&#xff08;\u5ffd\u7565&#xff09;<\/h4>\n<p id=\"ufe650d8f\">You can use gradlew&#xff08;gradlew.bat, for Windows user&#xff09;in &lt;ROOT_DIR&gt; instead of running Gradle command.<\/p>\n<p id=\"u3506f4d4\">\u60a8\u53ef\u4ee5\u5728&lt;ROOT_DIR&gt;\u4e2d\u4f7f\u7528gradlew&#xff08;gradlew.bat&#xff0c;\u9002\u7528\u4e8eWindows\u7528\u6237&#xff09;&#xff0c;\u800c\u4e0d\u662f\u8fd0\u884cGradle\u547d\u4ee4\u3002<\/p>\n<p id=\"ufc18d649\">$ gradlew build<\/p>\n<p id=\"ue57e0803\">This is a program called Gradle wrapper, which will automatically install Gradle if it is not installed and call it.<\/p>\n<p id=\"ucbbbabd6\">\u8fd9\u662f\u4e00\u4e2a\u540d\u4e3aGradle\u5305\u88c5\u5668\u7684\u7a0b\u5e8f&#xff0c;\u5982\u679c\u672a\u5b89\u88c5Gradle&#xff0c;\u5b83\u5c06\u81ea\u52a8\u5b89\u88c5Gradle\u5e76\u8c03\u7528\u5b83<\/p>\n<h4 id=\"3-c.-discard-build-products\">3-c. Discard build products&#xff08;\u5ffd\u7565&#xff09;<\/h4>\n<p id=\"ua9498861\">The following Gradle command will delete the files generated by the above build process.<\/p>\n<p id=\"u8453807e\">\u4ee5\u4e0bGradle\u547d\u4ee4\u5c06\u5220\u9664\u4e0a\u8ff0\u6784\u5efa\u8fc7\u7a0b\u751f\u6210\u7684\u6587\u4ef6\u3002<\/p>\n<p id=\"uc7561cec\">$ gradle clean<\/p>\n<p id=\"u9d63596b\">\n<p id=\"u4fe0f982\">You can also instruct the execution of clean and build at one time as follows:<\/p>\n<p id=\"uca2ff025\">\u60a8\u8fd8\u53ef\u4ee5\u6307\u793a\u4e00\u6b21\u6267\u884c\u6e05\u7406\u548c\u6784\u5efa&#xff0c;\u5982\u4e0b\u6240\u793a&#xff1a;<\/p>\n<p id=\"u5ee8033b\">$ gradle clean build<\/p>\n<p id=\"u559099d2\">\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b&#xff0c;\u6784\u5efa\u662f\u5728\u6e05\u7406\u540e\u6267\u884c\u7684<\/p>\n<h3 id=\"4.-run-simblock\">4. Run SimBlock<\/h3>\n<p id=\"u5cbf99d2\">There are two main ways to run SimBlock: by using Gradle command and by using build products.<\/p>\n<h4 id=\"4-a.-run-with-gradle-command\">4-a. Run with Gradle command<\/h4>\n<p id=\"ub86a2068\">Run following Gradle command in &lt;ROOT_DIR&gt;, then the simulator starts up.<\/p>\n<p id=\"u6dbadd91\">$ gradle :simulator:run<\/p>\n<p id=\"u1af05b8d\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"142\" id=\"uec755580\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/05\/20250512080235-6821ab1b45200.png\" width=\"1123\" \/><\/p>\n<p id=\"ud4e57e4e\">Output files of the simulator will be stored in &lt;ROOT_DIR&gt;\/simulator\/src\/dist\/output.<\/p>\n<p id=\"u88aac0b1\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"136\" id=\"uaeaf1abf\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/05\/20250512080235-6821ab1b6312c.png\" width=\"637\" \/><\/p>\n<p id=\"uff20e486\">\u5230\u8fd9\u91cc\u5df2\u7ecf\u6210\u529f\u8fd0\u884c&#xff0c;\u6211\u4eec\u53ef\u4ee5\u5c06\/simulator\/src\/dist\/output\/output.json\u4e0a\u4f20\u5230SimBlock Visualizer\u6765\u53ef\u89c6\u5316\u533a\u5757\u94fe\u4eff\u771f&#xff1a;<\/p>\n<p id=\"u6c6e1b43\">\n<p class=\"img-center\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"1093\" id=\"ueffe2323\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/05\/20250512080235-6821ab1b6eb29.png\" width=\"1546\" \/><\/p>\n<p id=\"u6cb92506\">\u5f53\u7136&#xff0c;\u53ef\u4ee5\u7ee7\u7eed\u770b\u4e0b\u9762\u7684\u4ecb\u7ecd\u6765\u5c5e\u6027simbolck\u7684\u4f7f\u7528\u3002<\/p>\n<h4 id=\"4-b.-run-with-build-product\">4-b. Run with build product&#xff08;\u5ffd\u7565&#xff09;<\/h4>\n<p id=\"uec6335c9\">Extract the distribution archive (zip, tar) of &lt;ROOT_DIR&gt;\/simulator\/build\/distributions. Then, the following directory structure will be created.<\/p>\n<p>SimBlock<br \/>\n&#043;&#8211; bin<br \/>\n&#043;&#8211; conf<br \/>\n&#043;&#8211; lib<br \/>\n&#043;&#8211; output <\/p>\n<p id=\"ub22dbcd2\">A script for execution is in bin directory.<\/p>\n<p id=\"u0eddebb7\">By executing runSimBlock (runSimBlock.bat for Windows) in the terminal, the simulator starts up.<\/p>\n<p id=\"u8142588f\">Output files of the simulator will be stored in output directory.<\/p>\n<h4 id=\"4-c.-other-ways\">4-c. Other ways&#xff08;\u5ffd\u7565&#xff09;<\/h4>\n<p id=\"ub64dded5\">The extracted distribution archive contains the jar file of SimBlock (lib\/simulator.jar). Of course, it is also possible to execute this jar file directly with the java command. Note that it is required to set the classpath appropriately.<\/p>\n<p id=\"u2bc2c9a7\">You can also run SimBlock on IDEs, such as Eclipse. It is explained later in the section of &#034;Import to IDE&#034;.<\/p>\n<h3 id=\"5.-simulator-parameter\">5. \u4eff\u771f\u53c2\u6570<\/h3>\n<table id=\"GxIs1\">\n<tbody>\n<tr>\n<td>\n<p id=\"u546cb36a\">\u53c2\u6570<\/p>\n<\/td>\n<td>\n<p id=\"u81ff743b\">\u5b9a\u4e49\u7684\u4f4d\u7f6e<\/p>\n<\/td>\n<td>\n<p id=\"u504d8dc8\">\u63cf\u8ff0<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table id=\"mp9cq\">\n<tbody>\n<tr>\n<td>\n<p id=\"ucaafe3ef\">\u533a\u57df\u5217\u8868<\/p>\n<\/td>\n<td>\n<p id=\"u5475f533\">BlockChainSimulator.settings.NetworkConfiguration#REGION_LIST<\/p>\n<\/td>\n<td>\n<p id=\"u132abd7d\">\u8282\u70b9\u53ef\u4ee5\u5b58\u5728\u7684\u533a\u57df\u5217\u8868\u3002<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table id=\"DMc8W\">\n<tbody>\n<tr>\n<td>\n<p id=\"u0338d344\">\u5ef6\u8fdf\u5217\u8868<\/p>\n<\/td>\n<td>\n<p id=\"u071ae02e\">BlockChainSimulator.settings.NetworkConfiguration#LATENCY<\/p>\n<\/td>\n<td>\n<p id=\"u3ba9b049\">\u5206\u914d\u7ed9\u6bcf\u4e2a\u533a\u57df\u7684\u5ef6\u8fdf\u5217\u8868\u3002&#xff08;\u5355\u4f4d&#xff1a;\u6beb\u79d2&#xff09;<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table id=\"LD3Vl\">\n<tbody>\n<tr>\n<td>\n<p id=\"uff7ef6f5\">\u4e0a\u4f20\u5e26\u5bbd\u5217\u8868<\/p>\n<\/td>\n<td>\n<p id=\"uaf7c1958\">BlockChainSimulator.settings.NetworkConfiguration#UPLOAD_BANDWIDTH<\/p>\n<\/td>\n<td>\n<p id=\"udd1a78e6\">\u5206\u914d\u7ed9\u6bcf\u4e2a\u533a\u57df\u7684\u4e0a\u4f20\u5e26\u5bbd\u5217\u8868\u3002&#xff08;\u5355\u4f4d&#xff1a;\u6bd4\u7279\u6bcf\u79d2&#xff09;<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table id=\"vpIiV\">\n<tbody>\n<tr>\n<td>\n<p id=\"u23975bb0\">\u4e0b\u8f7d\u5e26\u5bbd\u5217\u8868<\/p>\n<\/td>\n<td>\n<p id=\"ua7f813d6\">BlockChainSimulator.settings.NetworkConfiguration#DOWNLOAD_BANDWIDTH<\/p>\n<\/td>\n<td>\n<p id=\"ua7e5554a\">\u5206\u914d\u7ed9\u6bcf\u4e2a\u533a\u57df\u7684\u4e0b\u8f7d\u5e26\u5bbd\u5217\u8868\u3002&#xff08;\u5355\u4f4d&#xff1a;\u6bd4\u7279\u6bcf\u79d2&#xff09;<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table id=\"Ulv78\">\n<tbody>\n<tr>\n<td>\n<p id=\"u04d233fd\">\u533a\u57df\u5206\u5e03<\/p>\n<\/td>\n<td>\n<p id=\"u941d161f\">BlockChainSimulator.settings.NetworkConfiguration#REGION_DISTRIBUTION<\/p>\n<\/td>\n<td>\n<p id=\"uddcffa19\">\u8282\u70b9\u533a\u57df\u7684\u5206\u5e03\u3002\u6bcf\u4e2a\u503c\u8868\u793a\u8be5\u533a\u57df\u5185\u8282\u70b9\u6570\u91cf\u4e0e\u6240\u6709\u8282\u70b9\u6570\u91cf\u4e4b\u6bd4\u3002<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table id=\"QVHVe\">\n<tbody>\n<tr>\n<td>\n<p id=\"u41bc2a14\">\u5ea6\u6570\u5206\u5e03<\/p>\n<\/td>\n<td>\n<p id=\"u2bd0c872\">BlockChainSimulator.settings.SimulationConfiguration#DEGREE_DISTRIBUTION<\/p>\n<\/td>\n<td>\n<p id=\"u59ba2ccb\">\u51fa\u7ad9\u8fde\u63a5\u6570\u7684\u7d2f\u79ef\u5206\u5e03\u3002\u53c2\u8003&#xff1a;Andrew Miller \u7b49\u4eba&#xff0c;\u201cDiscovering bitcoin&#039;s public topology and influential nodes\u201d&#xff0c;2015\u5e74\u3002<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table id=\"GPqlY\">\n<tbody>\n<tr>\n<td>\n<p id=\"u5273929e\">\u8282\u70b9\u6570\u91cf<\/p>\n<\/td>\n<td>\n<p id=\"u22b06fa6\">BlockChainSimulator.settings.SimulationConfiguration#NUM_OF_NODES<\/p>\n<\/td>\n<td>\n<p id=\"u01d157b0\">\u53c2\u4e0e\u533a\u5757\u94fe\u7f51\u7edc\u7684\u8282\u70b9\u6570\u91cf\u3002<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table id=\"fWxpu\">\n<tbody>\n<tr>\n<td>\n<p id=\"u890be0eb\">\u8def\u7531\u8868<\/p>\n<\/td>\n<td>\n<p id=\"udee688d7\">BlockChainSimulator.settings.SimulationConfiguration#TABLE<\/p>\n<\/td>\n<td>\n<p id=\"u7d9165ad\">\u8def\u7531\u8868\u7684\u79cd\u7c7b\u3002<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table id=\"AuXig\">\n<tbody>\n<tr>\n<td>\n<p id=\"u0efdfd21\">\u533a\u5757\u95f4\u9694<\/p>\n<\/td>\n<td>\n<p id=\"u458cf3bd\">BlockChainSimulator.settings.SimulationConfiguration#INTERVAL<\/p>\n<\/td>\n<td>\n<p id=\"u7cc894c9\">\u533a\u5757\u751f\u6210\u95f4\u9694\u7684\u671f\u671b\u503c\u3002\u6316\u77ff\u96be\u5ea6\u4f1a\u6839\u636e\u8be5\u503c\u548c\u6316\u77ff\u80fd\u529b\u7684\u603b\u548c\u81ea\u52a8\u8c03\u6574\u3002&#xff08;\u5355\u4f4d&#xff1a;\u6beb\u79d2&#xff09;<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table id=\"wnAqL\">\n<tbody>\n<tr>\n<td>\n<p id=\"u86db6600\">\u5e73\u5747\u6316\u77ff\u80fd\u529b<\/p>\n<\/td>\n<td>\n<p id=\"ufc90552a\">BlockChainSimulator.settings.SimulationConfiguration#AVERAGE_MINING_POWER<\/p>\n<\/td>\n<td>\n<p id=\"u45a08b76\">\u6bcf\u4e2a\u8282\u70b9\u7684\u5e73\u5747\u6316\u77ff\u80fd\u529b\u3002\u6316\u77ff\u80fd\u529b\u5bf9\u5e94\u4e8e\u6bd4\u7279\u5e01\u4e2d\u7684\u54c8\u5e0c\u7387&#xff0c;\u5373\u6bcf\u6beb\u79d2\u6267\u884c\u7684\u6316\u77ff&#xff08;\u54c8\u5e0c\u8ba1\u7b97&#xff09;\u6b21\u6570\u3002<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table id=\"LXmHc\">\n<tbody>\n<tr>\n<td>\n<p id=\"u32775c8e\">\u6316\u77ff\u80fd\u529b\u6807\u51c6\u5dee<\/p>\n<\/td>\n<td>\n<p id=\"ua004eaf1\">BlockChainSimulator.settings.SimulationConfiguration#STDEV_OF_MINING_POWER<\/p>\n<\/td>\n<td>\n<p id=\"uc34713d3\">\u6bcf\u4e2a\u8282\u70b9\u7684\u6316\u77ff\u80fd\u529b\u6839\u636e\u6b63\u6001\u5206\u5e03\u968f\u673a\u786e\u5b9a&#xff0c;\u5176\u5747\u503c\u4e3a AVERAGE_MINING_POWER&#xff0c;\u6807\u51c6\u5dee\u4e3a STDEV_OF_MINING_POWER\u3002<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table id=\"tI8Ac\">\n<tbody>\n<tr>\n<td>\n<p id=\"u4439e577\">\u6700\u5927\u533a\u5757\u9ad8\u5ea6<\/p>\n<\/td>\n<td>\n<p id=\"ub0632729\">BlockChainSimulator.settings.SimulationConfiguration#END_BLOCK_HEIGHT<\/p>\n<\/td>\n<td>\n<p id=\"u1dd3cd34\">\u6a21\u62df\u7ed3\u675f\u65f6\u7684\u533a\u5757\u9ad8\u5ea6\u3002<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table id=\"GlYwv\">\n<tbody>\n<tr>\n<td>\n<p id=\"u37665d07\">\u533a\u5757\u5927\u5c0f<\/p>\n<\/td>\n<td>\n<p id=\"u7d1c948b\">BlockChainSimulator.settings.SimulationConfiguration#BLOCK_SIZE<\/p>\n<\/td>\n<td>\n<p id=\"uab80bdec\">\u533a\u5757\u5927\u5c0f\u3002&#xff08;\u5355\u4f4d&#xff1a;\u5b57\u8282&#xff09;<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table id=\"bYGpi\">\n<tbody>\n<tr>\n<td>\n<p id=\"u4c846275\">CBR\u4f7f\u7528\u7387<\/p>\n<\/td>\n<td>\n<p id=\"u2c04c74d\">BlockChainSimulator.settings.SimulationConfiguration#CBR_USAGE_RATE<\/p>\n<\/td>\n<td>\n<p id=\"u3c0cf68a\">\u7d27\u51d1\u533a\u5757\u4e2d\u7ee7&#xff08;CBR&#xff09;\u534f\u8bae\u7684\u4f7f\u7528\u7387\u3002<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table id=\"MqO9B\">\n<tbody>\n<tr>\n<td>\n<p id=\"uea0417cc\">\u8282\u70b9\u53d8\u52a8\u7387<\/p>\n<\/td>\n<td>\n<p id=\"ud216ac9a\">BlockChainSimulator.settings.SimulationConfiguration#CHURN_NODE_RATE<\/p>\n<\/td>\n<td>\n<p id=\"u488ff966\">\u9020\u6210\u8282\u70b9\u53d8\u52a8\u7684\u8282\u70b9\u6bd4\u4f8b\u3002<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table id=\"bOQpV\">\n<tbody>\n<tr>\n<td>\n<p id=\"u51cbcf40\">\u7d27\u51d1\u533a\u5757\u5927\u5c0f<\/p>\n<\/td>\n<td>\n<p id=\"u7fdede44\">BlockChainSimulator.settings.SimulationConfiguration#COMPACT_BLOCK_SIZE<\/p>\n<\/td>\n<td>\n<p id=\"u6dadcbf2\">\u7d27\u51d1\u533a\u5757\u5927\u5c0f\u3002&#xff08;\u5355\u4f4d&#xff1a;\u5b57\u8282&#xff09;<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table id=\"KwqXP\">\n<tbody>\n<tr>\n<td>\n<p id=\"u363ff49a\">\u63a7\u5236\u8282\u70b9CBR\u5931\u8d25\u7387<\/p>\n<\/td>\n<td>\n<p id=\"u78246d8e\">BlockChainSimulator.settings.SimulationConfiguration#CBR_FAILURE_RATE_FOR_CONTROL_NODE<\/p>\n<\/td>\n<td>\n<p id=\"ua4815156\">\u59cb\u7ec8\u8fde\u63a5\u7f51\u7edc\u7684\u63a7\u5236\u8282\u70b9\u7684CBR\u5931\u8d25\u7387\u3002<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table id=\"jYjy4\">\n<tbody>\n<tr>\n<td>\n<p id=\"ufbfea858\">\u8282\u70b9\u53d8\u52a8\u8282\u70b9CBR\u5931\u8d25\u7387<\/p>\n<\/td>\n<td>\n<p id=\"u8587ef17\">BlockChainSimulator.settings.SimulationConfiguration#CBR_FAILURE_RATE_FOR_CHURN_NODE<\/p>\n<\/td>\n<td>\n<p id=\"ue6a81eb5\">\u9020\u6210\u8282\u70b9\u53d8\u52a8\u7684\u8282\u70b9\u7684CBR\u5931\u8d25\u7387\u3002<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table id=\"HXxg4\">\n<tbody>\n<tr>\n<td>\n<p id=\"uc3f0f30d\">\u63a7\u5236\u8282\u70b9CBR\u5931\u8d25\u533a\u5757\u5927\u5c0f\u5206\u5e03<\/p>\n<\/td>\n<td>\n<p id=\"u8efb3c44\">BlockChainSimulator.settings.SimulationConfiguration#CBR_FAILURE_BLOCK_SIZE_DISTRIBUTION_FOR_CONTROL_NODE<\/p>\n<\/td>\n<td>\n<p id=\"u48f4306c\">\u63a7\u5236\u8282\u70b9\u5728CBR\u5931\u8d25\u65f6\u63a5\u6536\u7684\u6570\u636e\u5927\u5c0f\u5206\u5e03\u3002<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table id=\"o45Ge\">\n<tbody>\n<tr>\n<td>\n<p id=\"uc9b7c0c5\">\u8282\u70b9\u53d8\u52a8\u8282\u70b9CBR\u5931\u8d25\u533a\u5757\u5927\u5c0f\u5206\u5e03<\/p>\n<\/td>\n<td>\n<p id=\"u60177f22\">BlockChainSimulator.settings.SimulationConfiguration#CBR_FAILURE_BLOCK_SIZE_DISTRIBUTION_FOR_CHURN_NODE<\/p>\n<\/td>\n<td>\n<p id=\"ud20d0bc6\">\u53d8\u52a8\u8282\u70b9\u5728CBR\u5931\u8d25\u65f6\u63a5\u6536\u7684\u6570\u636e\u5927\u5c0f\u5206\u5e03\u3002<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p id=\"ub8075049\">\n<p id=\"uf9bc4acd\">SimBlock.settings package has two classes which have these parameters: NetworkConfiguration.java and SimulationConfiguration.java. The former has parameters related to network parameters, and the latter has blockchain parameters. By changing these parameters and doing build, you can conduct different patterns of simulation.&#xff08; SimBlock.settings \u5305\u542b\u4e24\u4e2a\u7c7b&#xff0c;\u5b83\u4eec\u5177\u6709\u8fd9\u4e9b\u53c2\u6570&#xff1a;NetworkConfiguration.java \u548c SimulationConfiguration.java\u3002\u524d\u8005\u5305\u542b\u4e0e\u7f51\u7edc\u53c2\u6570\u76f8\u5173\u7684\u53c2\u6570&#xff0c;\u540e\u8005\u5305\u542b\u4e0e\u533a\u5757\u94fe\u53c2\u6570\u76f8\u5173\u7684\u53c2\u6570\u3002\u901a\u8fc7\u4fee\u6539\u8fd9\u4e9b\u53c2\u6570\u5e76\u8fdb\u884c\u6784\u5efa&#xff0c;\u53ef\u4ee5\u8fdb\u884c\u4e0d\u540c\u6a21\u5f0f\u7684\u6a21\u62df\u3002 &#xff09;<\/p>\n<h3 id=\"6.-output\">6. Output<\/h3>\n<p id=\"ud6cbd7e9\">\u6a21\u62df\u5668\u5c06\u6a21\u62df\u7ed3\u679c\u8f93\u51fa\u5230\u6807\u51c6\u8f93\u51fa\u548c\u4e00\u4e9b\u6587\u4ef6\u3002\u6587\u4ef6\u8f93\u51fa\u4f4d\u7f6e\u4e3a<\/p>\n<p id=\"u9ace321a\">&lt;ROOT_DIR&gt;\/simulator\/src\/dist\/out&#xff08;\u901a\u8fc7 Gradle \u547d\u4ee4\u6267\u884c\u65f6&#xff09;\u4ee5\u53ca SimBlock\/output&#xff08;\u901a\u8fc7\u6784\u5efa\u4ea7\u54c1\u8fd0\u884c\u65f6&#xff09;\u3002\u8f93\u51fa\u5185\u5bb9\u5982\u4e0b&#xff1a;<\/p>\n<ul>\n<li id=\"u382d082a\">Standard output and out.txt<\/li>\n<\/ul>\n<ul>\n<li>\n<ul>\n<li id=\"ufff0b7f9\">The following is listed under block ID<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<ul>\n<li>\n<ul>\n<li id=\"u3d906102\">&#xff1c;node ID, propagation time&#xff1e;<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<ul>\n<li>\n<ul>\n<li>\n<ul>\n<li id=\"u471aff27\">Propagation time: The time from when the block of the block ID is generated to when the node of the node ID is reached.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li id=\"ucbe29d11\">Blocklist.txt<\/li>\n<\/ul>\n<ul>\n<li>\n<ul>\n<li id=\"uefbe7b3c\">&#xff1c;fork information, block height, block ID&#xff1e;<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<ul>\n<li>\n<ul>\n<li id=\"u8805c3ae\">Fork information: One of &#034;OnChain&#034; and &#034;Orphan&#034;. &#034;OnChain&#034; denote block is on Main chain. &#034;Orphan&#034; denote block is an orphan block.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li id=\"ua2edaedd\">graph\/<\/li>\n<\/ul>\n<ul>\n<li>\n<ul>\n<li id=\"u6a51e163\">${number}.txt: Network information when block height is ${number}<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<ul>\n<li>\n<ul>\n<li id=\"ue3e86070\">&#xff1c;node ID, node ID&#xff1e;<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<ul>\n<li>\n<ul>\n<li>\n<ul>\n<li id=\"u1a40dd67\">Connection from left node ID to right node ID.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li id=\"ubb847384\">output.json<\/li>\n<\/ul>\n<ul>\n<li>\n<ul>\n<li id=\"u19230a43\">This file is listing occurred events. By uploading this file into SimBlock Visualizer, you can see the visualization.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<ul>\n<li>\n<ul>\n<li id=\"uebe321e4\">&#xff1c;event, content&#xff1e;<\/li>\n<li id=\"u913df419\">Event<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<ul>\n<li>\n<ul>\n<li>\n<ul>\n<li id=\"u301e59a2\">add-link: Add a node to neighbor nodes.<\/li>\n<li id=\"u332cb052\">remove-link: Remove a node from neighbor nodes.<\/li>\n<li id=\"u67cf5138\">flow-block: Block transmmission.<\/li>\n<li id=\"u624632ac\">simulation-end: Simulation end.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<ul>\n<li>\n<ul>\n<li id=\"u97655fe0\">content<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<ul>\n<li>\n<ul>\n<li>\n<ul>\n<li id=\"u9c35321b\">timestamp: Order of events.<\/li>\n<li id=\"u64e81086\">block-id: Block id.<\/li>\n<li id=\"u7e2fcf29\">transmission-timestamp: Timestamp when a block is transmitted.<\/li>\n<li id=\"u920b39e7\">reception-timestamp: Timestamp when a block is recieved.<\/li>\n<li id=\"u1e22f5af\">begin-node-id: Source node.<\/li>\n<li id=\"u10261dd2\">end-node-id: End node.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3 id=\"7.-import-to-ide\">7. Import to IDE<\/h3>\n<p id=\"u42b51b4e\">By using Gradle, you can generate configuration files of an IDE and easily import them into it.<\/p>\n<p id=\"ud10ecca4\">\u901a\u8fc7\u4f7f\u7528 Gradle&#xff0c;\u60a8\u53ef\u4ee5\u751f\u6210 IDE \u7684\u914d\u7f6e\u6587\u4ef6&#xff0c;\u5e76\u8f7b\u677e\u5730\u5c06\u5176\u5bfc\u5165\u5230 IDE \u4e2d\u3002<\/p>\n<h4 id=\"7-a.-for-intellij-idea\">7-a. For IntelliJ IDEA<\/h4>\n<p id=\"uc0047c73\">By executing the following Gradle command, configuration files for IntelliJ IDEA are generated.<\/p>\n<p id=\"u1ad10081\">$ gradle idea<\/p>\n<p id=\"ua7187335\">Generated files are listed as follows:<\/p>\n<table id=\"yl5r7\">\n<tbody>\n<tr>\n<td>\n<p id=\"ubefb7753\">File<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u02f7c66d\">&lt;ROOT_DIR&gt;\/&lt;ROOT_DIR&gt;.iml<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"ucdfdd4fb\">&lt;ROOT_DIR&gt;\/&lt;ROOT_DIR&gt;.ipr<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"uab888a1e\">&lt;ROOT_DIR&gt;\/&lt;ROOT_DIR&gt;.iws<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u67cb1d7c\">&lt;ROOT_DIR&gt;\/simulator\/simulator.iml<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p id=\"uaffd986c\">With IntelliJ IDEA, select File -&gt; Open and select &lt;ROOT_DIR&gt;.ipr. &lt;ROOT_DIR&gt;\/simulator will be imported as a module.<\/p>\n<p id=\"u9ceb5a91\">Then, you can run the simulator with the IDE. For example, select &lt;ROOT_DIR&gt;\/simulator\/src\/main\/java\/SimBlock\/simulator\/Main.java from the tool window of the project structure, right click and execute Run &#039;Main.main ()&#039;. Output files will be stored in &lt;ROOT_DIR&gt;\/simulator\/src\/dist\/output. Do not import as Gradle project if offered.<\/p>\n<h5 id=\"discard-products\">Discard products<\/h5>\n<p id=\"u0def570d\">The following Gradle command will delete the files generated by $ gradle idea. Note that &lt;ROOT_DIR&gt;.iws file will not be deleted. Also, if the project is left open in the IDE, the deleted files may be automatically regenerated by the IDE.)<\/p>\n<p id=\"u67a2b2b4\">$ gradle cleanIdea<\/p>\n<p id=\"uf60ef0df\">You can also instruct the execution of cleanIdea and idea at one time as follows:<\/p>\n<p id=\"u16d08f31\">$ gradle cleanIdea idea<\/p>\n<p id=\"u29710749\">In this case, idea is executed after cleanIdea.<\/p>\n<h4 id=\"7-b.-for-eclipse\">7-b. For Eclipse<\/h4>\n<p id=\"u7c7bb195\">By executing the following Gradle command, configuration files for Eclipse are generated.<\/p>\n<p id=\"u61a9392f\">$ gradle eclipse<\/p>\n<p id=\"u8d7d82cc\">Generated files are listed as follows:<\/p>\n<table id=\"rnhgU\">\n<tbody>\n<tr>\n<td>\n<p id=\"u76286230\">File<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u64eb44e5\">&lt;ROOT_DIR&gt;\/.project<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"ub7c1a4bb\">&lt;ROOT_DIR&gt;\/simulator\/.classpath<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u82400857\">&lt;ROOT_DIR&gt;\/simulator\/.project<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p id=\"u5520cd41\">&lt;ROOT_DIR&gt;\/simulator\/.settings<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p id=\"ufa33bfef\">With Eclipse, select File -&gt; Open Projects from File System and select &lt;ROOT_DIR&gt; as Import source. Check the listed two Eclipse projects, and click Finish. &lt;ROOT_DIR&gt;\/simulator and &lt;ROOT_DIR&gt; will be imported as a project respectively.<\/p>\n<p id=\"ub7625a12\">Then, you can run the simulator with the IDE. For example, select the simulator project from Package Explorer, right-click and execute Run As -&gt; Java Application to start the simulator. Output files will be stored in &lt;ROOT_DIR&gt;\/simulator\/src\/dist\/output.<\/p>\n<h5 id=\"discard-products-1\">Discard products<\/h5>\n<p id=\"u752e68a3\">The following Gradle command will delete the files generated by $ gradle eclipse.<\/p>\n<p id=\"u02e78fa7\">$ gradle cleanEclipse<\/p>\n<p id=\"u14ce5515\">You can also instruct the execution of cleanEclipse and eclipse at one time as follows:<\/p>\n<p id=\"u47e8b8d6\">$ gradle cleanEclipse eclipse<\/p>\n<p id=\"ue5eeeb1b\">In this case, eclipse is executed after cleanEclipse.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6587\u7ae0\u6d4f\u89c8\u9605\u8bfb1.2k\u6b21\uff0c\u70b9\u8d5e9\u6b21\uff0c\u6536\u85cf29\u6b21\u3002\u533a\u5757\u94fe\u4eff\u771f\u5de5\u5177SimBlock\u57fa\u672c\u4f7f\u7528_\u533a\u5757\u94fe\u4eff\u771f\u5668<\/p>\n","protected":false},"author":2,"featured_media":36780,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[3177,1160],"topic":[],"class_list":["post-36787","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-server","tag-fabric","tag-1160"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u533a\u5757\u94fe\u4eff\u771f\u5de5\u5177SimBlock\u4f7f\u7528 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.wsisp.com\/helps\/36787.html\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u533a\u5757\u94fe\u4eff\u771f\u5de5\u5177SimBlock\u4f7f\u7528 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"og:description\" content=\"\u6587\u7ae0\u6d4f\u89c8\u9605\u8bfb1.2k\u6b21\uff0c\u70b9\u8d5e9\u6b21\uff0c\u6536\u85cf29\u6b21\u3002\u533a\u5757\u94fe\u4eff\u771f\u5de5\u5177SimBlock\u57fa\u672c\u4f7f\u7528_\u533a\u5757\u94fe\u4eff\u771f\u5668\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.wsisp.com\/helps\/36787.html\" \/>\n<meta property=\"og:site_name\" content=\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"article:published_time\" content=\"2025-05-12T08:02:37+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/05\/20250512080234-6821ab1ab8ff0.png\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/36787.html\",\"url\":\"https:\/\/www.wsisp.com\/helps\/36787.html\",\"name\":\"\u533a\u5757\u94fe\u4eff\u771f\u5de5\u5177SimBlock\u4f7f\u7528 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"isPartOf\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\"},\"datePublished\":\"2025-05-12T08:02:37+00:00\",\"dateModified\":\"2025-05-12T08:02:37+00:00\",\"author\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/36787.html#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.wsisp.com\/helps\/36787.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/36787.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.wsisp.com\/helps\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u533a\u5757\u94fe\u4eff\u771f\u5de5\u5177SimBlock\u4f7f\u7528\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\",\"url\":\"https:\/\/www.wsisp.com\/helps\/\",\"name\":\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"description\":\"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"contentUrl\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"caption\":\"admin\"},\"sameAs\":[\"http:\/\/wp.wsisp.com\"],\"url\":\"https:\/\/www.wsisp.com\/helps\/author\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u533a\u5757\u94fe\u4eff\u771f\u5de5\u5177SimBlock\u4f7f\u7528 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.wsisp.com\/helps\/36787.html","og_locale":"zh_CN","og_type":"article","og_title":"\u533a\u5757\u94fe\u4eff\u771f\u5de5\u5177SimBlock\u4f7f\u7528 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","og_description":"\u6587\u7ae0\u6d4f\u89c8\u9605\u8bfb1.2k\u6b21\uff0c\u70b9\u8d5e9\u6b21\uff0c\u6536\u85cf29\u6b21\u3002\u533a\u5757\u94fe\u4eff\u771f\u5de5\u5177SimBlock\u57fa\u672c\u4f7f\u7528_\u533a\u5757\u94fe\u4eff\u771f\u5668","og_url":"https:\/\/www.wsisp.com\/helps\/36787.html","og_site_name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","article_published_time":"2025-05-12T08:02:37+00:00","og_image":[{"url":"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/05\/20250512080234-6821ab1ab8ff0.png"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"admin","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"8 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.wsisp.com\/helps\/36787.html","url":"https:\/\/www.wsisp.com\/helps\/36787.html","name":"\u533a\u5757\u94fe\u4eff\u771f\u5de5\u5177SimBlock\u4f7f\u7528 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","isPartOf":{"@id":"https:\/\/www.wsisp.com\/helps\/#website"},"datePublished":"2025-05-12T08:02:37+00:00","dateModified":"2025-05-12T08:02:37+00:00","author":{"@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41"},"breadcrumb":{"@id":"https:\/\/www.wsisp.com\/helps\/36787.html#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.wsisp.com\/helps\/36787.html"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.wsisp.com\/helps\/36787.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.wsisp.com\/helps"},{"@type":"ListItem","position":2,"name":"\u533a\u5757\u94fe\u4eff\u771f\u5de5\u5177SimBlock\u4f7f\u7528"}]},{"@type":"WebSite","@id":"https:\/\/www.wsisp.com\/helps\/#website","url":"https:\/\/www.wsisp.com\/helps\/","name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","description":"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41","name":"admin","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/","url":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","contentUrl":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","caption":"admin"},"sameAs":["http:\/\/wp.wsisp.com"],"url":"https:\/\/www.wsisp.com\/helps\/author\/admin"}]}},"_links":{"self":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/36787","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/comments?post=36787"}],"version-history":[{"count":0,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/36787\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media\/36780"}],"wp:attachment":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media?parent=36787"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/categories?post=36787"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/tags?post=36787"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/topic?post=36787"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}