ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>永久免费在线,av自拍一区,久久99伊人http://www.aygfsteel.com/waterjava/category/55337.html我胡汉三又回来了zh-cnMon, 16 Mar 2020 05:57:35 GMTMon, 16 Mar 2020 05:57:35 GMT60IPFS参考网å…?/title><link>http://www.aygfsteel.com/waterjava/archive/2020/03/14/435258.html</link><dc:creator>狼爱上狸</dc:creator><author>狼爱上狸</author><pubDate>Sat, 14 Mar 2020 03:01:00 GMT</pubDate><guid>http://www.aygfsteel.com/waterjava/archive/2020/03/14/435258.html</guid><wfw:comment>http://www.aygfsteel.com/waterjava/comments/435258.html</wfw:comment><comments>http://www.aygfsteel.com/waterjava/archive/2020/03/14/435258.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/waterjava/comments/commentRss/435258.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/waterjava/services/trackbacks/435258.html</trackback:ping><description><![CDATA[<a >https://ipfs.github.io/public-gateway-checker/</a><img src ="http://www.aygfsteel.com/waterjava/aggbug/435258.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/waterjava/" target="_blank">狼爱上狸</a> 2020-03-14 11:01 <a href="http://www.aygfsteel.com/waterjava/archive/2020/03/14/435258.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>安装node-canvasæ—¶win_delay_load_hook.c错误http://www.aygfsteel.com/waterjava/archive/2020/02/22/435150.html狼爱上狸狼爱上狸Sat, 22 Feb 2020 08:33:00 GMThttp://www.aygfsteel.com/waterjava/archive/2020/02/22/435150.htmlhttp://www.aygfsteel.com/waterjava/comments/435150.htmlhttp://www.aygfsteel.com/waterjava/archive/2020/02/22/435150.html#Feedback0http://www.aygfsteel.com/waterjava/comments/commentRss/435150.htmlhttp://www.aygfsteel.com/waterjava/services/trackbacks/435150.html

狼爱上狸 2020-02-22 16:33 发表评论
]]>
IPFS问题http://www.aygfsteel.com/waterjava/archive/2020/01/16/435040.html狼爱上狸狼爱上狸Thu, 16 Jan 2020 06:44:00 GMThttp://www.aygfsteel.com/waterjava/archive/2020/01/16/435040.htmlhttp://www.aygfsteel.com/waterjava/comments/435040.htmlhttp://www.aygfsteel.com/waterjava/archive/2020/01/16/435040.html#Feedback0http://www.aygfsteel.com/waterjava/comments/commentRss/435040.htmlhttp://www.aygfsteel.com/waterjava/services/trackbacks/435040.html 1.æŠ?nbsp; "Gateway": "/ip4/127.0.0.1/tcp/8080"修改为:"Gateway": "/ip4/0.0.0.0/tcp/8080"åQŒè¿™æ ähœ¬æœºå°±å¯ä»¥ç”?92.168WEB讉K—®äº†ã€?/div>
2.把WINDOWS防火墙入站的8080端口打开åQŒè¿™æ ·åœ¨å±€åŸŸç½‘ž®Þpƒ½è®‰K—®äº†ã€?/div>


]]>【我的区块链之èµ\ã€? 谈一谈IPFS原理及玩æ³?/title><link>http://www.aygfsteel.com/waterjava/archive/2020/01/12/435032.html</link><dc:creator>狼爱上狸</dc:creator><author>狼爱上狸</author><pubDate>Sun, 12 Jan 2020 08:17:00 GMT</pubDate><guid>http://www.aygfsteel.com/waterjava/archive/2020/01/12/435032.html</guid><wfw:comment>http://www.aygfsteel.com/waterjava/comments/435032.html</wfw:comment><comments>http://www.aygfsteel.com/waterjava/archive/2020/01/12/435032.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/waterjava/comments/commentRss/435032.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/waterjava/services/trackbacks/435032.html</trackback:ping><description><![CDATA[https://blog.csdn.net/qq_25870633/article/details/82027510<img src ="http://www.aygfsteel.com/waterjava/aggbug/435032.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/waterjava/" target="_blank">狼爱上狸</a> 2020-01-12 16:17 <a href="http://www.aygfsteel.com/waterjava/archive/2020/01/12/435032.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>入门 WebpackåQŒçœ‹˜q™ç¯‡ž®±å¤Ÿäº?/title><link>http://www.aygfsteel.com/waterjava/archive/2020/01/04/435018.html</link><dc:creator>狼爱上狸</dc:creator><author>狼爱上狸</author><pubDate>Sat, 04 Jan 2020 09:22:00 GMT</pubDate><guid>http://www.aygfsteel.com/waterjava/archive/2020/01/04/435018.html</guid><wfw:comment>http://www.aygfsteel.com/waterjava/comments/435018.html</wfw:comment><comments>http://www.aygfsteel.com/waterjava/archive/2020/01/04/435018.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/waterjava/comments/commentRss/435018.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/waterjava/services/trackbacks/435018.html</trackback:ping><description><![CDATA[<a >https://segmentfault.com/a/1190000006178770#articleHeader3</a><img src ="http://www.aygfsteel.com/waterjava/aggbug/435018.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/waterjava/" target="_blank">狼爱上狸</a> 2020-01-04 17:22 <a href="http://www.aygfsteel.com/waterjava/archive/2020/01/04/435018.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>文档计划 | IPFS API参考文æ¡?/title><link>http://www.aygfsteel.com/waterjava/archive/2020/01/03/435016.html</link><dc:creator>狼爱上狸</dc:creator><author>狼爱上狸</author><pubDate>Fri, 03 Jan 2020 11:03:00 GMT</pubDate><guid>http://www.aygfsteel.com/waterjava/archive/2020/01/03/435016.html</guid><wfw:comment>http://www.aygfsteel.com/waterjava/comments/435016.html</wfw:comment><comments>http://www.aygfsteel.com/waterjava/archive/2020/01/03/435016.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/waterjava/comments/commentRss/435016.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/waterjava/services/trackbacks/435016.html</trackback:ping><description><![CDATA[<a >https://www.jianshu.com/p/e38d5f733c81</a><img src ="http://www.aygfsteel.com/waterjava/aggbug/435016.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/waterjava/" target="_blank">狼爱上狸</a> 2020-01-03 19:03 <a href="http://www.aygfsteel.com/waterjava/archive/2020/01/03/435016.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IPFS环境搭徏和用ipfs-api讉K—®ipfs¾|‘络http://www.aygfsteel.com/waterjava/archive/2020/01/03/435015.html狼爱上狸狼爱上狸Fri, 03 Jan 2020 09:55:00 GMThttp://www.aygfsteel.com/waterjava/archive/2020/01/03/435015.htmlhttp://www.aygfsteel.com/waterjava/comments/435015.htmlhttp://www.aygfsteel.com/waterjava/archive/2020/01/03/435015.html#Feedback0http://www.aygfsteel.com/waterjava/comments/commentRss/435015.htmlhttp://www.aygfsteel.com/waterjava/services/trackbacks/435015.htmlhttps://blog.csdn.net/mongo_node/article/details/80143631

]]>
安装solc指定版本http://www.aygfsteel.com/waterjava/archive/2020/01/01/435010.html狼爱上狸狼爱上狸Wed, 01 Jan 2020 04:28:00 GMThttp://www.aygfsteel.com/waterjava/archive/2020/01/01/435010.htmlhttp://www.aygfsteel.com/waterjava/comments/435010.htmlhttp://www.aygfsteel.com/waterjava/archive/2020/01/01/435010.html#Feedback0http://www.aygfsteel.com/waterjava/comments/commentRss/435010.htmlhttp://www.aygfsteel.com/waterjava/services/trackbacks/435010.htmlcnpm install -g solc@0.4.22


狼爱上狸 2020-01-01 12:28 发表评论
]]>
Node.js安装及环境配¾|®ä¹‹Windows½‹?/title><link>http://www.aygfsteel.com/waterjava/archive/2020/01/01/435009.html</link><dc:creator>狼爱上狸</dc:creator><author>狼爱上狸</author><pubDate>Wed, 01 Jan 2020 04:13:00 GMT</pubDate><guid>http://www.aygfsteel.com/waterjava/archive/2020/01/01/435009.html</guid><wfw:comment>http://www.aygfsteel.com/waterjava/comments/435009.html</wfw:comment><comments>http://www.aygfsteel.com/waterjava/archive/2020/01/01/435009.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/waterjava/comments/commentRss/435009.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/waterjava/services/trackbacks/435009.html</trackback:ping><description><![CDATA[<h1><a >https://www.jianshu.com/p/03a76b2e7e00</a><br /></h1><img src ="http://www.aygfsteel.com/waterjava/aggbug/435009.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/waterjava/" target="_blank">狼爱上狸</a> 2020-01-01 12:13 <a href="http://www.aygfsteel.com/waterjava/archive/2020/01/01/435009.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>crxæ–‡äšg怎么安装?è°äh­Œ‹¹è§ˆå™¨Chrome打开crxæ–‡äšg的方æ³?/title><link>http://www.aygfsteel.com/waterjava/archive/2019/12/29/435002.html</link><dc:creator>狼爱上狸</dc:creator><author>狼爱上狸</author><pubDate>Sun, 29 Dec 2019 14:57:00 GMT</pubDate><guid>http://www.aygfsteel.com/waterjava/archive/2019/12/29/435002.html</guid><wfw:comment>http://www.aygfsteel.com/waterjava/comments/435002.html</wfw:comment><comments>http://www.aygfsteel.com/waterjava/archive/2019/12/29/435002.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/waterjava/comments/commentRss/435002.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/waterjava/services/trackbacks/435002.html</trackback:ping><description><![CDATA[<a >https://www.jb51.net/softjc/402153.html</a><img src ="http://www.aygfsteel.com/waterjava/aggbug/435002.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/waterjava/" target="_blank">狼爱上狸</a> 2019-12-29 22:57 <a href="http://www.aygfsteel.com/waterjava/archive/2019/12/29/435002.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>go调用以太坊rpc写入合约操作中的DATA数据解析åQˆçº¯å­—符串参敎ͼ‰http://www.aygfsteel.com/waterjava/archive/2019/12/27/434995.html狼爱上狸狼爱上狸Fri, 27 Dec 2019 06:49:00 GMThttp://www.aygfsteel.com/waterjava/archive/2019/12/27/434995.htmlhttp://www.aygfsteel.com/waterjava/comments/434995.htmlhttp://www.aygfsteel.com/waterjava/archive/2019/12/27/434995.html#Feedback0http://www.aygfsteel.com/waterjava/comments/commentRss/434995.htmlhttp://www.aygfsteel.com/waterjava/services/trackbacks/434995.htmlhttps://blog.csdn.net/weixin_42608885/article/details/100889008

狼爱上狸 2019-12-27 14:49 发表评论
]]>
一步步构徏自己的智能合¾U?/title><link>http://www.aygfsteel.com/waterjava/archive/2019/12/26/434994.html</link><dc:creator>狼爱上狸</dc:creator><author>狼爱上狸</author><pubDate>Thu, 26 Dec 2019 08:09:00 GMT</pubDate><guid>http://www.aygfsteel.com/waterjava/archive/2019/12/26/434994.html</guid><wfw:comment>http://www.aygfsteel.com/waterjava/comments/434994.html</wfw:comment><comments>http://www.aygfsteel.com/waterjava/archive/2019/12/26/434994.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/waterjava/comments/commentRss/434994.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/waterjava/services/trackbacks/434994.html</trackback:ping><description><![CDATA[<a >https://segmentfault.com/a/1190000014797663</a><img src ="http://www.aygfsteel.com/waterjava/aggbug/434994.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/waterjava/" target="_blank">狼爱上狸</a> 2019-12-26 16:09 <a href="http://www.aygfsteel.com/waterjava/archive/2019/12/26/434994.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何审计一个智能合¾U?/title><link>http://www.aygfsteel.com/waterjava/archive/2019/12/26/434993.html</link><dc:creator>狼爱上狸</dc:creator><author>狼爱上狸</author><pubDate>Thu, 26 Dec 2019 07:37:00 GMT</pubDate><guid>http://www.aygfsteel.com/waterjava/archive/2019/12/26/434993.html</guid><wfw:comment>http://www.aygfsteel.com/waterjava/comments/434993.html</wfw:comment><comments>http://www.aygfsteel.com/waterjava/archive/2019/12/26/434993.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/waterjava/comments/commentRss/434993.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/waterjava/services/trackbacks/434993.html</trackback:ping><description><![CDATA[<a >https://cloud.tencent.com/developer/article/1522230</a><img src ="http://www.aygfsteel.com/waterjava/aggbug/434993.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/waterjava/" target="_blank">狼爱上狸</a> 2019-12-26 15:37 <a href="http://www.aygfsteel.com/waterjava/archive/2019/12/26/434993.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何调用以太坊智能合¾U?/title><link>http://www.aygfsteel.com/waterjava/archive/2019/12/26/434992.html</link><dc:creator>狼爱上狸</dc:creator><author>狼爱上狸</author><pubDate>Thu, 26 Dec 2019 07:31:00 GMT</pubDate><guid>http://www.aygfsteel.com/waterjava/archive/2019/12/26/434992.html</guid><wfw:comment>http://www.aygfsteel.com/waterjava/comments/434992.html</wfw:comment><comments>http://www.aygfsteel.com/waterjava/archive/2019/12/26/434992.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/waterjava/comments/commentRss/434992.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/waterjava/services/trackbacks/434992.html</trackback:ping><description><![CDATA[<a >https://www.cnblogs.com/KRDecad3/p/11745568.html</a><img src ="http://www.aygfsteel.com/waterjava/aggbug/434992.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/waterjava/" target="_blank">狼爱上狸</a> 2019-12-26 15:31 <a href="http://www.aygfsteel.com/waterjava/archive/2019/12/26/434992.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>¿Ué’¥ç”Ÿæˆé’±åŒ…助记词的‹¹ç¨‹http://www.aygfsteel.com/waterjava/archive/2019/12/24/434984.html狼爱上狸狼爱上狸Tue, 24 Dec 2019 02:02:00 GMThttp://www.aygfsteel.com/waterjava/archive/2019/12/24/434984.htmlhttp://www.aygfsteel.com/waterjava/comments/434984.htmlhttp://www.aygfsteel.com/waterjava/archive/2019/12/24/434984.html#Feedback0http://www.aygfsteel.com/waterjava/comments/commentRss/434984.htmlhttp://www.aygfsteel.com/waterjava/services/trackbacks/434984.htmlhttps://www.cnblogs.com/hankal/p/9472920.html

狼爱上狸 2019-12-24 10:02 发表评论
]]>
BIP39钱包助记词规�/title><link>http://www.aygfsteel.com/waterjava/archive/2019/12/24/434983.html</link><dc:creator>狼爱上狸</dc:creator><author>狼爱上狸</author><pubDate>Tue, 24 Dec 2019 02:01:00 GMT</pubDate><guid>http://www.aygfsteel.com/waterjava/archive/2019/12/24/434983.html</guid><wfw:comment>http://www.aygfsteel.com/waterjava/comments/434983.html</wfw:comment><comments>http://www.aygfsteel.com/waterjava/archive/2019/12/24/434983.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/waterjava/comments/commentRss/434983.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/waterjava/services/trackbacks/434983.html</trackback:ping><description><![CDATA[<a >https://www.jianshu.com/p/d5bac6d36dc6</a><img src ="http://www.aygfsteel.com/waterjava/aggbug/434983.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/waterjava/" target="_blank">狼爱上狸</a> 2019-12-24 10:01 <a href="http://www.aygfsteel.com/waterjava/archive/2019/12/24/434983.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>remixhttp://www.aygfsteel.com/waterjava/archive/2019/12/22/434980.html狼爱上狸狼爱上狸Sat, 21 Dec 2019 16:27:00 GMThttp://www.aygfsteel.com/waterjava/archive/2019/12/22/434980.htmlhttp://www.aygfsteel.com/waterjava/comments/434980.htmlhttp://www.aygfsteel.com/waterjava/archive/2019/12/22/434980.html#Feedback0http://www.aygfsteel.com/waterjava/comments/commentRss/434980.htmlhttp://www.aygfsteel.com/waterjava/services/trackbacks/434980.htmlhttps://remix.ethereum.org/
http://remix.hubwiz.com/
https://ethereum.github.io/


狼爱上狸 2019-12-22 00:27 发表评论
]]>
Web3与智能合¾U¦äº¤äº’实æˆ?/title><link>http://www.aygfsteel.com/waterjava/archive/2019/12/21/434979.html</link><dc:creator>狼爱上狸</dc:creator><author>狼爱上狸</author><pubDate>Sat, 21 Dec 2019 06:46:00 GMT</pubDate><guid>http://www.aygfsteel.com/waterjava/archive/2019/12/21/434979.html</guid><wfw:comment>http://www.aygfsteel.com/waterjava/comments/434979.html</wfw:comment><comments>http://www.aygfsteel.com/waterjava/archive/2019/12/21/434979.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/waterjava/comments/commentRss/434979.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/waterjava/services/trackbacks/434979.html</trackback:ping><description><![CDATA[<p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; font-family: verdana, "ms song", 宋体, Arial, å¾®èÊY雅黑, Helvetica, sans-serif; font-size: 12px;">最新内容会更新在主ç«?a style="margin: 0px; padding: 0px; color: #3b5999; text-decoration-line: none;">深入‹¹…出区块铄¡¤¾åŒ?/a><br style="margin: 0px; padding: 0px;" />原文链接:<a style="margin: 0px; padding: 0px; color: #3b5999; text-decoration-line: none;">Web3与智能合¾U¦äº¤äº’实æˆ?/a></p><h2>写在前面</h2><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; font-family: verdana, "ms song", 宋体, Arial, å¾®èÊY雅黑, Helvetica, sans-serif; font-size: 12px;">在最初学习以太坊的时候,很多人都是自己创å»ÞZ»¥å¤ªåŠèŠ‚ç‚¹åŽï¼Œä½¿ç”¨geth与之交互。这¿Uä‹É用命令行交互的方法虽然让很多½E‹åºå‘˜æ„Ÿåˆ°å…´å¥‹ï¼ˆé»‘客帝国的既视感åQŸï¼‰åQŒä½†ä¸å¯èƒ½æŒ‡æœ›æ™®é€šç”¨æˆ·é€šè¿‡å‘½ä×o行ä‹É用Dapp。因此,我们需要一¿Uå‹å¥½çš„æ–¹å¼åQˆæ¯”如一个web™åµé¢åQ‰æ¥ä¸Žæ™ºèƒ½åˆ¾U¦äº¤äº’,于是问题的答案就æ˜?code style="margin: 1px 5px; line-height: 1.8; vertical-align: middle; display: inline-block; padding: 0px 5px !important; font-family: "Courier New", sans-serif !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">web3.js</code>ã€?/p><h2>Web3.js</h2><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; font-family: verdana, "ms song", 宋体, Arial, å¾®èÊY雅黑, Helvetica, sans-serif; font-size: 12px;"><a style="margin: 0px; padding: 0px; color: #3b5999; text-decoration-line: none;">Web3.js</a>是以太坊官方的Javascript APIåQŒå¯ä»¥å¸®åŠ©æ™ºèƒ½åˆ¾U¦å¼€å‘者ä‹É用HTTP或者IPC与本地的或者远½E‹çš„以太坊节点交互。实际上ž®±æ˜¯ä¸€ä¸ªåº“的集合,主要包括下面几个库:</p><ul style="margin: 0px 0px 0px 30px; padding: 0px; word-break: break-all; font-family: verdana, "ms song", 宋体, Arial, å¾®èÊY雅黑, Helvetica, sans-serif; font-size: 12px;"><li style="margin: 0px; padding: 0px; list-style: disc;"><code style="margin: 1px 5px; line-height: 1.8; vertical-align: middle; display: inline-block; padding: 0px 5px !important; font-family: "Courier New", sans-serif !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">web3-eth</code>用来与以太坊区块铑֒Œæ™ø™ƒ½åˆçº¦äº¤äº’</li><li style="margin: 0px; padding: 0px; list-style: disc;"><code style="margin: 1px 5px; line-height: 1.8; vertical-align: middle; display: inline-block; padding: 0px 5px !important; font-family: "Courier New", sans-serif !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">web3-shh</code>用来控制whisper协议与p2p通信以及òq¿æ’­</li><li style="margin: 0px; padding: 0px; list-style: disc;"><code style="margin: 1px 5px; line-height: 1.8; vertical-align: middle; display: inline-block; padding: 0px 5px !important; font-family: "Courier New", sans-serif !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">web3-bzz</code>用来与swarm协议交互</li><li style="margin: 0px; padding: 0px; list-style: disc;"><code style="margin: 1px 5px; line-height: 1.8; vertical-align: middle; display: inline-block; padding: 0px 5px !important; font-family: "Courier New", sans-serif !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">web3-utils</code>包含了一些Dapp开发有用的功能</li></ul><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; font-family: verdana, "ms song", 宋体, Arial, å¾®èÊY雅黑, Helvetica, sans-serif; font-size: 12px;">Web3与geth通信使用的是 <a style="margin: 0px; padding: 0px; color: #3b5999; text-decoration-line: none;">JSON-RPC</a> åQŒè¿™æ˜¯ä¸€¿Uè½»é‡çñ”çš„RPCåQˆRemote Procedure CallåQ‰åè®®ï¼Œæ•´ä¸ªé€šä¿¡çš„æ¨¡åž‹å¯ä»¥æŠ½è±¡äؓ下图ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; font-family: verdana, "ms song", 宋体, Arial, å¾®èÊY雅黑, Helvetica, sans-serif; font-size: 12px;"><img src="https://learnblockchain.cn/images/Communication_Model.jpg" alt="Web3 Communication Model" style="margin: 0px; padding: 0px; border: 0px; max-width: 720px; height: auto;" /></p><h2>搭徏‹¹‹è¯•é“?/h2><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; font-family: verdana, "ms song", 宋体, Arial, å¾®èÊY雅黑, Helvetica, sans-serif; font-size: 12px;">在开发初期,我们òq¶æ²¡æœ‰å¿…要ä‹É用真实的公链åQŒäؓ了开发效率,一般选择在本地搭建测试链。在本文我们选择çš?a style="margin: 0px; padding: 0px; color: #3b5999; text-decoration-line: none;">Ganache</a>åQˆåœ¨æ­¤ä¹‹å‰ä‹É用的是testrpcåQŒGanache属于它的升çñ”版)åQŒä¸€ä¸ªå›¾å½¢åŒ–‹¹‹è¯•软äšgåQˆä¹Ÿæœ‰å‘½ä»¤è¡Œç‰ˆæœ¬åQ‰ï¼Œå¯ä»¥ä¸€é”®åœ¨æœ¬åœ°æ­å¾ä»¥å¤ªåŠåŒºå—链‹¹‹è¯•环境åQŒåƈ且将区块铄¡š„状态通过囑ÖŞ界面昄¡¤ºå‡ºæ¥åQŒGanache的运行界面如下图所½Cºã€?/p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; font-family: verdana, "ms song", 宋体, Arial, å¾®èÊY雅黑, Helvetica, sans-serif; font-size: 12px;"><img src="https://learnblockchain.cn/images/Ganache.png" alt="Ganache" style="margin: 0px; padding: 0px; border: 0px; max-width: 720px; height: auto;" /></p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; font-family: verdana, "ms song", 宋体, Arial, å¾®èÊY雅黑, Helvetica, sans-serif; font-size: 12px;">从图中可以看到Ganache会默认创å»?0个èÌŽæˆøP¼Œç›‘听地址æ˜?code style="margin: 1px 5px; line-height: 1.8; vertical-align: middle; display: inline-block; padding: 0px 5px !important; font-family: "Courier New", sans-serif !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">http://127.0.0.1:7545</code>åQŒå¯ä»¥å®žæ—¶çœ‹åˆ?code style="margin: 1px 5px; line-height: 1.8; vertical-align: middle; display: inline-block; padding: 0px 5px !important; font-family: "Courier New", sans-serif !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">Current Block</code>ã€?code style="margin: 1px 5px; line-height: 1.8; vertical-align: middle; display: inline-block; padding: 0px 5px !important; font-family: "Courier New", sans-serif !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">Gas Price</code>ã€?code style="margin: 1px 5px; line-height: 1.8; vertical-align: middle; display: inline-block; padding: 0px 5px !important; font-family: "Courier New", sans-serif !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">Gas Limit</code>½{‰ä¿¡æ¯ã€?/p><h2>åˆ›å¾æ™ø™ƒ½åˆçº¦</h2><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; font-family: verdana, "ms song", 宋体, Arial, å¾®èÊY雅黑, Helvetica, sans-serif; font-size: 12px;">ç›®å‰ä»¥å¤ªåŠå®˜æ–¹å…¨åŠ›æ”¯æŒçš„æ™ø™ƒ½åˆçº¦å¼€å‘环境是<a style="margin: 0px; padding: 0px; color: #3b5999; text-decoration-line: none;">Remix IDE</a>åQŒæˆ‘们在合约¾~–辑™åµé¢¾~–写如下代码åQ?/p><pre style="margin-top: 10px; margin-bottom: 10px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-size: 12px;"><code javascript"="" style="margin: auto; vertical-align: middle; display: block; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; height: auto; overflow-x: auto; padding: 5px !important; line-height: 1.5 !important; font-family: "Courier New", sans-serif !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">pragma solidity ^<span style="margin: 0px; padding: 0px; line-height: 18px;">0.4</span><span style="margin: 0px; padding: 0px; line-height: 18px;">.21</span>; contract InfoContract { string fName; uint age; <span style="margin: 0px; padding: 0px; line-height: 18px;"><span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;">function</span> <span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">setInfo</span>(<span style="margin: 0px; padding: 0px; line-height: 18px;">string _fName, uint _age</span>) <span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">public</span> </span>{ fName = _fName; age = _age; } <span style="margin: 0px; padding: 0px; line-height: 18px;"><span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;">function</span> <span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">getInfo</span>() <span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">public</span> <span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">constant</span> <span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">returns</span> (<span style="margin: 0px; padding: 0px; line-height: 18px;">string, uint</span>) </span>{ <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;">return</span> (fName, age); } }</code></pre><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; font-family: verdana, "ms song", 宋体, Arial, å¾®èÊY雅黑, Helvetica, sans-serif; font-size: 12px;">代码很简单,ž®±æ˜¯½Ž€å•çš„¾l?code style="margin: 1px 5px; line-height: 1.8; vertical-align: middle; display: inline-block; padding: 0px 5px !important; font-family: "Courier New", sans-serif !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">name</code>å’?code style="margin: 1px 5px; line-height: 1.8; vertical-align: middle; display: inline-block; padding: 0px 5px !important; font-family: "Courier New", sans-serif !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">age</code>变量赋å€ég¸Žè¯Õd–åQŒæŽ¥ä¸‹æ¥åˆ‡æ¢åˆ?run çš?tab 下,ž®?code style="margin: 1px 5px; line-height: 1.8; vertical-align: middle; display: inline-block; padding: 0px 5px !important; font-family: "Courier New", sans-serif !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">Environment</code>切换æˆ?code style="margin: 1px 5px; line-height: 1.8; vertical-align: middle; display: inline-block; padding: 0px 5px !important; font-family: "Courier New", sans-serif !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">Web3 Provider</code>åQŒåƈ输入我们的测试链的地址<code style="margin: 1px 5px; line-height: 1.8; vertical-align: middle; display: inline-block; padding: 0px 5px !important; font-family: "Courier New", sans-serif !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">http://127.0.0.1:7545</code>åQŒè¿™é‡Œå¯¹˜q™ä¸‰ä¸ªé€‰é¡¹åšä¸€½Ž€å•说明:</p><ul style="margin: 0px 0px 0px 30px; padding: 0px; word-break: break-all; font-family: verdana, "ms song", 宋体, Arial, å¾®èÊY雅黑, Helvetica, sans-serif; font-size: 12px;"><li style="margin: 0px; padding: 0px; list-style: disc;"><code style="margin: 1px 5px; line-height: 1.8; vertical-align: middle; display: inline-block; padding: 0px 5px !important; font-family: "Courier New", sans-serif !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">Javascript VM</code>åQšç®€å•çš„Javascript虚拟机环境,¾U¯çÑa¾lƒä¹ æ™ø™ƒ½åˆçº¦¾~–写的时候可以选择</li><li style="margin: 0px; padding: 0px; list-style: disc;"><code style="margin: 1px 5px; line-height: 1.8; vertical-align: middle; display: inline-block; padding: 0px 5px !important; font-family: "Courier New", sans-serif !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">Injected Web3</code>åQšè¿žæŽ¥åˆ°åµŒå…¥åˆ°é¡µé¢çš„Web3åQŒæ¯”如连接到MetaMask</li><li style="margin: 0px; padding: 0px; list-style: disc;"><code style="margin: 1px 5px; line-height: 1.8; vertical-align: middle; display: inline-block; padding: 0px 5px !important; font-family: "Courier New", sans-serif !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">Web3 Provider</code>åQšè¿žæŽ¥åˆ°è‡ªå®šä¹‰çš„节点åQŒå¦‚¿Uæœ‰çš„æµ‹è¯•网¾lœã€?/li></ul><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; font-family: verdana, "ms song", 宋体, Arial, å¾®èÊY雅黑, Helvetica, sans-serif; font-size: 12px;">如果˜qžæŽ¥æˆåŠŸåQŒé‚£ä¹ˆåœ¨ä¸‹é¢çš?code style="margin: 1px 5px; line-height: 1.8; vertical-align: middle; display: inline-block; padding: 0px 5px !important; font-family: "Courier New", sans-serif !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">Account</code>的选项会默认选择 Ganache 创徏的第一个è̎户地址。接下来我们点击<code style="margin: 1px 5px; line-height: 1.8; vertical-align: middle; display: inline-block; padding: 0px 5px !important; font-family: "Courier New", sans-serif !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">Create</code>ž®×ƒ¼šž®†æˆ‘ä»¬çš„æ™ø™ƒ½åˆçº¦éƒ¨çÖv到我们的‹¹‹è¯•¾|‘中。接下来 Remix 的页面不要关闭,在后面编写前端代码时˜q˜è¦ç”¨åˆ°åˆçº¦çš„地址以及<code style="margin: 1px 5px; line-height: 1.8; vertical-align: middle; display: inline-block; padding: 0px 5px !important; font-family: "Courier New", sans-serif !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">ABI</code>信息ã€?/p><h2>安装Web3</h2><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; font-family: verdana, "ms song", 宋体, Arial, å¾®èÊY雅黑, Helvetica, sans-serif; font-size: 12px;">在这之前åQŒå…ˆåœ¨ç»ˆç«¯åˆ›å»ºæˆ‘们的™å¹ç›®åQ?/p><pre style="margin-top: 10px; margin-bottom: 10px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-size: 12px;"><code style="margin: auto; vertical-align: middle; display: block; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; height: auto; overflow-x: auto; padding: 5px !important; line-height: 1.5 !important; font-family: "Courier New", sans-serif !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">> mkdir info > <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;">cd</span> info</code></pre><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; font-family: verdana, "ms song", 宋体, Arial, å¾®èÊY雅黑, Helvetica, sans-serif; font-size: 12px;">接下来ä‹Éç”?node.js 的包½Ž¡ç†å·¥å…· npm 初始化项目,创徏<code style="margin: 1px 5px; line-height: 1.8; vertical-align: middle; display: inline-block; padding: 0px 5px !important; font-family: "Courier New", sans-serif !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">package.json</code> æ–‡äšgåQŒå…¶ä¸­ä¿å­˜äº†™å¹ç›®éœ€è¦çš„相关依赖环境ã€?/p><pre style="margin-top: 10px; margin-bottom: 10px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-size: 12px;"><code shell"="" style="margin: auto; vertical-align: middle; display: block; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; height: auto; overflow-x: auto; padding: 5px !important; line-height: 1.5 !important; font-family: "Courier New", sans-serif !important; border: 1px solid #cccccc !important; border-radius: 3px !important;"><span style="margin: 0px; padding: 0px; color: #2b91af; line-height: 18px;">></span><span style="margin: 0px; padding: 0px; line-height: 18px;"> npm init</span></code></pre><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; font-family: verdana, "ms song", 宋体, Arial, å¾®èÊY雅黑, Helvetica, sans-serif; font-size: 12px;">一路按回èžR直到™å¹ç›®åˆ›å¾å®Œæˆã€‚最后,˜qè¡Œä¸‹é¢å‘½ä×o安装web.jsåQ?/p><pre style="margin-top: 10px; margin-bottom: 10px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-size: 12px;"><code shell"="" style="margin: auto; vertical-align: middle; display: block; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; height: auto; overflow-x: auto; padding: 5px !important; line-height: 1.5 !important; font-family: "Courier New", sans-serif !important; border: 1px solid #cccccc !important; border-radius: 3px !important;"><span style="margin: 0px; padding: 0px; color: #2b91af; line-height: 18px;">></span><span style="margin: 0px; padding: 0px; line-height: 18px;"> npm install web3</span></code></pre><blockquote style="margin-right: 0px; margin-left: 0px; background-image: none; font-family: verdana, "ms song", 宋体, Arial, å¾®èÊY雅黑, Helvetica, sans-serif; font-size: 12px;"><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;"><em style="margin: 0px; padding: 0px;">注意åQ?/em> åœ¨å®žé™…安装过½E‹ä¸­æˆ‘发现web3在安装完成后òq¶æ²¡æœ?nbsp;<code style="margin: 1px 5px; line-height: 1.8; vertical-align: middle; display: inline-block; padding: 0px 5px !important; font-family: "Courier New", sans-serif !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">/node_modules/web3/dist/we3.min.js</code> æ–‡äšgåQŒè¿™ä¸ªé—®é¢˜åœ¨ <a style="margin: 0px; padding: 0px; color: #3b5999; text-decoration-line: none;">issue#1041</a>中有体现åQŒä½†å®˜æ–¹å¥½åƒä¸€ç›´æ²¡è§£å†³ã€‚不˜q‡å¯ä»¥åœ¨˜q™é‡Œ<a style="margin: 0px; padding: 0px; color: #3b5999; text-decoration-line: none;">下蝲</a>所需的文ä»Óž¼Œè§£åŽ‹åŽå°†<code style="margin: 1px 5px; line-height: 1.8; vertical-align: middle; display: inline-block; padding: 0px 5px !important; font-family: "Courier New", sans-serif !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">dist</code>æ–‡äšg夹的内容拯‚´åˆ?nbsp;<code style="margin: 1px 5px; line-height: 1.8; vertical-align: middle; display: inline-block; padding: 0px 5px !important; font-family: "Courier New", sans-serif !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">/node_modules/web3</code>路径下ã€?/p></blockquote><h2>创徏 UI</h2><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; font-family: verdana, "ms song", 宋体, Arial, å¾®èÊY雅黑, Helvetica, sans-serif; font-size: 12px;">在项目目录下创徏<code style="margin: 1px 5px; line-height: 1.8; vertical-align: middle; display: inline-block; padding: 0px 5px !important; font-family: "Courier New", sans-serif !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">index.html</code>åQŒåœ¨˜q™é‡Œæˆ‘们ž®†åˆ›å»ºåŸº¼‹€çš?UIåQŒåŠŸèƒ½åŒ…æ‹?code style="margin: 1px 5px; line-height: 1.8; vertical-align: middle; display: inline-block; padding: 0px 5px !important; font-family: "Courier New", sans-serif !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">name</code>å’?code style="margin: 1px 5px; line-height: 1.8; vertical-align: middle; display: inline-block; padding: 0px 5px !important; font-family: "Courier New", sans-serif !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">age</code>的输入框åQŒä»¥åŠä¸€ä¸ªæŒ‰é’®ï¼Œ˜q™äº›ž®†é€šè¿‡ jQuery 实现åQ?/p><pre style="margin-top: 10px; margin-bottom: 10px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-size: 12px;"><code xml"="" style="margin: auto; vertical-align: middle; display: block; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; height: auto; overflow-x: auto; padding: 5px !important; line-height: 1.5 !important; font-family: "Courier New", sans-serif !important; border: 1px solid #cccccc !important; border-radius: 3px !important;"><span style="margin: 0px; padding: 0px; color: #2b91af; line-height: 18px;"><!DOCTYPE html></span> <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;"><<span style="margin: 0px; padding: 0px; line-height: 18px;">html</span> <span style="margin: 0px; padding: 0px; color: #ff0000; line-height: 18px;">lang</span>=<span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">"en"</span>></span> <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;"><<span style="margin: 0px; padding: 0px; line-height: 18px;">head</span>></span> <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;"><<span style="margin: 0px; padding: 0px; line-height: 18px;">meta</span> <span style="margin: 0px; padding: 0px; color: #ff0000; line-height: 18px;">charset</span>=<span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">"UTF-8"</span>></span> <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;"><<span style="margin: 0px; padding: 0px; line-height: 18px;">meta</span> <span style="margin: 0px; padding: 0px; color: #ff0000; line-height: 18px;">name</span>=<span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">"viewport"</span> <span style="margin: 0px; padding: 0px; color: #ff0000; line-height: 18px;">content</span>=<span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">"width=device-width, initial-scale=1.0"</span>></span> <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;"><<span style="margin: 0px; padding: 0px; line-height: 18px;">meta</span> <span style="margin: 0px; padding: 0px; color: #ff0000; line-height: 18px;">http-equiv</span>=<span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">"X-UA-Compatible"</span> <span style="margin: 0px; padding: 0px; color: #ff0000; line-height: 18px;">content</span>=<span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">"ie=edge"</span>></span> <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;"><<span style="margin: 0px; padding: 0px; line-height: 18px;">title</span>></span>Document<span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;"></<span style="margin: 0px; padding: 0px; line-height: 18px;">title</span>></span> <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;"><<span style="margin: 0px; padding: 0px; line-height: 18px;">link</span> <span style="margin: 0px; padding: 0px; color: #ff0000; line-height: 18px;">rel</span>=<span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">"stylesheet"</span> <span style="margin: 0px; padding: 0px; color: #ff0000; line-height: 18px;">type</span>=<span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">"text/css"</span> <span style="margin: 0px; padding: 0px; color: #ff0000; line-height: 18px;">href</span>=<span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">"main.css"</span>></span> <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;"><<span style="margin: 0px; padding: 0px; line-height: 18px;">script</span> <span style="margin: 0px; padding: 0px; color: #ff0000; line-height: 18px;">src</span>=<span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">"./node_modules/web3/dist/web3.min.js"</span>></span><span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;"></<span style="margin: 0px; padding: 0px; line-height: 18px;">script</span>></span> <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;"></<span style="margin: 0px; padding: 0px; line-height: 18px;">head</span>></span> <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;"><<span style="margin: 0px; padding: 0px; line-height: 18px;">body</span>></span> <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;"><<span style="margin: 0px; padding: 0px; line-height: 18px;">div</span> <span style="margin: 0px; padding: 0px; color: #ff0000; line-height: 18px;">class</span>=<span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">"container"</span>></span> <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;"><<span style="margin: 0px; padding: 0px; line-height: 18px;">h1</span>></span>Info Contract<span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;"></<span style="margin: 0px; padding: 0px; line-height: 18px;">h1</span>></span> <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;"><<span style="margin: 0px; padding: 0px; line-height: 18px;">h2</span> <span style="margin: 0px; padding: 0px; color: #ff0000; line-height: 18px;">id</span>=<span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">"info"</span>></span><span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;"></<span style="margin: 0px; padding: 0px; line-height: 18px;">h2</span>></span> <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;"><<span style="margin: 0px; padding: 0px; line-height: 18px;">label</span> <span style="margin: 0px; padding: 0px; color: #ff0000; line-height: 18px;">for</span>=<span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">"name"</span> <span style="margin: 0px; padding: 0px; color: #ff0000; line-height: 18px;">class</span>=<span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">"col-lg-2 control-label"</span>></span>Name<span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;"></<span style="margin: 0px; padding: 0px; line-height: 18px;">label</span>></span> <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;"><<span style="margin: 0px; padding: 0px; line-height: 18px;">input</span> <span style="margin: 0px; padding: 0px; color: #ff0000; line-height: 18px;">id</span>=<span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">"name"</span> <span style="margin: 0px; padding: 0px; color: #ff0000; line-height: 18px;">type</span>=<span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">"text"</span>></span> <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;"><<span style="margin: 0px; padding: 0px; line-height: 18px;">label</span> <span style="margin: 0px; padding: 0px; color: #ff0000; line-height: 18px;">for</span>=<span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">"name"</span> <span style="margin: 0px; padding: 0px; color: #ff0000; line-height: 18px;">class</span>=<span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">"col-lg-2 control-label"</span>></span>Age<span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;"></<span style="margin: 0px; padding: 0px; line-height: 18px;">label</span>></span> <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;"><<span style="margin: 0px; padding: 0px; line-height: 18px;">input</span> <span style="margin: 0px; padding: 0px; color: #ff0000; line-height: 18px;">id</span>=<span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">"age"</span> <span style="margin: 0px; padding: 0px; color: #ff0000; line-height: 18px;">type</span>=<span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">"text"</span>></span> <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;"><<span style="margin: 0px; padding: 0px; line-height: 18px;">button</span> <span style="margin: 0px; padding: 0px; color: #ff0000; line-height: 18px;">id</span>=<span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">"button"</span>></span>Update Info<span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;"></<span style="margin: 0px; padding: 0px; line-height: 18px;">button</span>></span> <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;"></<span style="margin: 0px; padding: 0px; line-height: 18px;">div</span>></span> <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;"><<span style="margin: 0px; padding: 0px; line-height: 18px;">script</span> <span style="margin: 0px; padding: 0px; color: #ff0000; line-height: 18px;">src</span>=<span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">"https://code.jquery.com/jquery-3.2.1.slim.min.js"</span>></span><span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;"></<span style="margin: 0px; padding: 0px; line-height: 18px;">script</span>></span> <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;"><<span style="margin: 0px; padding: 0px; line-height: 18px;">script</span>></span><span style="margin: 0px; padding: 0px; line-height: 18px;"> <span style="margin: 0px; padding: 0px; color: #008000; line-height: 18px;">// Our future code here..</span> </span><span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;"></<span style="margin: 0px; padding: 0px; line-height: 18px;">script</span>></span> <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;"></<span style="margin: 0px; padding: 0px; line-height: 18px;">body</span>></span> <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;"></<span style="margin: 0px; padding: 0px; line-height: 18px;">html</span>></span></code></pre><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; font-family: verdana, "ms song", 宋体, Arial, å¾®èÊY雅黑, Helvetica, sans-serif; font-size: 12px;">接下来需要编å†?code style="margin: 1px 5px; line-height: 1.8; vertical-align: middle; display: inline-block; padding: 0px 5px !important; font-family: "Courier New", sans-serif !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">main.css</code>æ–‡äšg讑֮šåŸºæœ¬çš„æ ·å¼ï¼š</p><pre style="margin-top: 10px; margin-bottom: 10px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-size: 12px;"><code style="margin: auto; vertical-align: middle; display: block; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; height: auto; overflow-x: auto; padding: 5px !important; line-height: 1.5 !important; font-family: "Courier New", sans-serif !important; border: 1px solid #cccccc !important; border-radius: 3px !important;"><span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;">body</span> { <span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">background-color</span>:<span style="margin: 0px; padding: 0px; line-height: 18px;">#F0F0F0</span>; <span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">padding</span>: <span style="margin: 0px; padding: 0px; line-height: 18px;">2em</span>; <span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">font-family</span>: <span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">'Raleway'</span>,<span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">'Source Sans Pro'</span>, <span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">'Arial'</span>; } <span style="margin: 0px; padding: 0px; line-height: 18px;">.container</span> { <span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">width</span>: <span style="margin: 0px; padding: 0px; line-height: 18px;">50%</span>; <span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">margin</span>: <span style="margin: 0px; padding: 0px; line-height: 18px;">0</span> auto; } <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;">label</span> { <span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">display</span>:block; <span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">margin-bottom</span>:<span style="margin: 0px; padding: 0px; line-height: 18px;">10px</span>; } <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;">input</span> { <span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">padding</span>:<span style="margin: 0px; padding: 0px; line-height: 18px;">10px</span>; <span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">width</span>: <span style="margin: 0px; padding: 0px; line-height: 18px;">50%</span>; <span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">margin-bottom</span>: <span style="margin: 0px; padding: 0px; line-height: 18px;">1em</span>; } <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;">button</span> { <span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">margin</span>: <span style="margin: 0px; padding: 0px; line-height: 18px;">2em</span> <span style="margin: 0px; padding: 0px; line-height: 18px;">0</span>; <span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">padding</span>: <span style="margin: 0px; padding: 0px; line-height: 18px;">1em</span> <span style="margin: 0px; padding: 0px; line-height: 18px;">4em</span>; <span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">display</span>:block; } <span style="margin: 0px; padding: 0px; line-height: 18px;">#info</span> { <span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">padding</span>:<span style="margin: 0px; padding: 0px; line-height: 18px;">1em</span>; <span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">background-color</span>:<span style="margin: 0px; padding: 0px; line-height: 18px;">#fff</span>; <span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">margin</span>: <span style="margin: 0px; padding: 0px; line-height: 18px;">1em</span> <span style="margin: 0px; padding: 0px; line-height: 18px;">0</span>; }</code></pre><h2>使用Web3与智能合¾U¦äº¤äº?/h2><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; font-family: verdana, "ms song", 宋体, Arial, å¾®èÊY雅黑, Helvetica, sans-serif; font-size: 12px;">UI 创徏好之后,åœ?code style="margin: 1px 5px; line-height: 1.8; vertical-align: middle; display: inline-block; padding: 0px 5px !important; font-family: "Courier New", sans-serif !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;"><script></code>标签中间¾~–写<code style="margin: 1px 5px; line-height: 1.8; vertical-align: middle; display: inline-block; padding: 0px 5px !important; font-family: "Courier New", sans-serif !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">web.js</code>çš„ä»£ç ä¸Žæ™ø™ƒ½åˆçº¦äº¤äº’。首先创å»?code style="margin: 1px 5px; line-height: 1.8; vertical-align: middle; display: inline-block; padding: 0px 5px !important; font-family: "Courier New", sans-serif !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">web3</code>实例åQŒåƈ与我们的‹¹‹è¯•环境˜qžæŽ¥åQ?/p><pre style="margin-top: 10px; margin-bottom: 10px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-size: 12px;"><code javascript"="" style="margin: auto; vertical-align: middle; display: block; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; height: auto; overflow-x: auto; padding: 5px !important; line-height: 1.5 !important; font-family: "Courier New", sans-serif !important; border: 1px solid #cccccc !important; border-radius: 3px !important;"><script> <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;">if</span> (<span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;">typeof</span> web3 !== <span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">'undefined'</span>) { web3 = <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;">new</span> Web3(web3.currentProvider); } <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;">else</span> { <span style="margin: 0px; padding: 0px; color: #008000; line-height: 18px;">// set the provider you want from Web3.providers</span> web3 = <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;">new</span> Web3(<span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;">new</span> Web3.providers.HttpProvider(<span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">"http://localhost:7545"</span>)); } <<span style="margin: 0px; padding: 0px; line-height: 18px;">/script></span></code></pre><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; font-family: verdana, "ms song", 宋体, Arial, å¾®èÊY雅黑, Helvetica, sans-serif; font-size: 12px;">˜q™æ®µä»£ç æ˜?a style="margin: 0px; padding: 0px; color: #3b5999; text-decoration-line: none;">web3.js Github</a>提供的样例,意思是如果<code style="margin: 1px 5px; line-height: 1.8; vertical-align: middle; display: inline-block; padding: 0px 5px !important; font-family: "Courier New", sans-serif !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">web3</code>已经被定义,那么ž®±å¯ä»¥ç›´æŽ¥å½“作我们的 provider 使用。如果没有定义,则我们手动指å®?providerã€?/p><blockquote style="margin-right: 0px; margin-left: 0px; background-image: none; font-family: verdana, "ms song", 宋体, Arial, å¾®èÊY雅黑, Helvetica, sans-serif; font-size: 12px;"><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">˜q™é‡Œå¯èƒ½ä¼šå­˜åœ¨ç–‘问:ä¸ÞZ»€ä¹?web3 会被事先定义呢?实际上,如果你ä‹É用类ä¼?nbsp;<a style="margin: 0px; padding: 0px; color: #3b5999; text-decoration-line: none;">MetaMask</a>åQˆä¸€ä¸?Chrome 上的插äšgåQŒè¿·ä½ åž‹ä»¥å¤ªåŠé’±åŒ…)˜q™æ ·çš„èÊYä»Óž¼Œprovider ž®×ƒ¼šè¢«è‡ªåŠ¨æ¤å…¥ã€?/p></blockquote><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; font-family: verdana, "ms song", 宋体, Arial, å¾®èÊY雅黑, Helvetica, sans-serif; font-size: 12px;">在上面代码的基础上,接下来设¾|®é»˜è®¤çš„以太坊èÌŽæˆøP¼š</p><pre style="margin-top: 10px; margin-bottom: 10px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-size: 12px;"><code javascript"="" style="margin: auto; vertical-align: middle; display: block; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; height: auto; overflow-x: auto; padding: 5px !important; line-height: 1.5 !important; font-family: "Courier New", sans-serif !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">web3.eth.defaultAccount = web3.eth.accounts[<span style="margin: 0px; padding: 0px; line-height: 18px;">0</span>];</code></pre><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; font-family: verdana, "ms song", 宋体, Arial, å¾®èÊY雅黑, Helvetica, sans-serif; font-size: 12px;">在上文中我们使用 Ganache 已经创徏äº?10 个è̎户了åQŒè¿™é‡Œæˆ‘们选择½W¬ä¸€ä¸ªè̎户当作默认è̎戗÷€?/p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; font-family: verdana, "ms song", 宋体, Arial, å¾®èÊY雅黑, Helvetica, sans-serif; font-size: 12px;">接下来需要让我们çš?code style="margin: 1px 5px; line-height: 1.8; vertical-align: middle; display: inline-block; padding: 0px 5px !important; font-family: "Courier New", sans-serif !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">web3</code>知道我们的合¾U¦æ˜¯ä»€ä¹ˆæ ·çš„,˜q™é‡Œéœ€è¦ç”¨åˆ°åˆ¾U¦çš„ <a style="margin: 0px; padding: 0px; color: #3b5999; text-decoration-line: none;">ABIåQˆApplication Binary InterfaceåQ?/a>ã€?code style="margin: 1px 5px; line-height: 1.8; vertical-align: middle; display: inline-block; padding: 0px 5px !important; font-family: "Courier New", sans-serif !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">ABI</code>可以使我们调用合¾U¦çš„函数åQŒåƈ且从合约中获取数据ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; font-family: verdana, "ms song", 宋体, Arial, å¾®èÊY雅黑, Helvetica, sans-serif; font-size: 12px;">在上文中我们已经åœ?Remix 中创å»ÞZº†æˆ‘们的合¾U¦ï¼Œ˜q™æ—¶é‡æ–°å›žåˆ° RemixåQŒåœ¨ Compile çš?tab 下我们点å‡?code style="margin: 1px 5px; line-height: 1.8; vertical-align: middle; display: inline-block; padding: 0px 5px !important; font-family: "Courier New", sans-serif !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">Details</code> å‡ºçŽ°çš„é¡µé¢ä¸­æˆ‘ä»¬å¯ä»¥æ‹¯‚´åˆçº¦çš?code style="margin: 1px 5px; line-height: 1.8; vertical-align: middle; display: inline-block; padding: 0px 5px !important; font-family: "Courier New", sans-serif !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">ABI</code>åQŒå¦‚下图所½Cºã€?br style="margin: 0px; padding: 0px;" /><img src="https://learnblockchain.cn/images/ABI.png" style="margin: 0px; padding: 0px; border: 0px; max-width: 720px; height: auto;" alt="" /><br style="margin: 0px; padding: 0px;" />ž®†å…¶å¤åˆ¶åˆîC»£ç ä¸­åQ?/p><pre style="margin-top: 10px; margin-bottom: 10px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-size: 12px;"><code javascript"="" style="margin: auto; vertical-align: middle; display: block; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; height: auto; overflow-x: auto; padding: 5px !important; line-height: 1.5 !important; font-family: "Courier New", sans-serif !important; border: 1px solid #cccccc !important; border-radius: 3px !important;"><span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;">var</span> infoContract = web3.eth.contract(PASTE ABI HERE!);</code></pre><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; font-family: verdana, "ms song", 宋体, Arial, å¾®èÊY雅黑, Helvetica, sans-serif; font-size: 12px;">接下来è{åˆ?run çš„tabåQŒæ‹·è´åˆ¾U¦çš„地址åQŒå°†å…¶å¤åˆ¶åˆ°ä¸‹é¢çš„代码中åQ?/p><pre style="margin-top: 10px; margin-bottom: 10px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-size: 12px;"><code javascript"="" style="margin: auto; vertical-align: middle; display: block; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; height: auto; overflow-x: auto; padding: 5px !important; line-height: 1.5 !important; font-family: "Courier New", sans-serif !important; border: 1px solid #cccccc !important; border-radius: 3px !important;"><span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;">var</span> info = InfoContract.at(<span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">'PASTE CONTRACT ADDRESS HERE'</span>);</code></pre><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; font-family: verdana, "ms song", 宋体, Arial, å¾®èÊY雅黑, Helvetica, sans-serif; font-size: 12px;">完成˜q™äº›æˆ‘们ž®±å¯ä»¥è°ƒç”¨åˆ¾U¦ä¸­çš„函æ•îCº†åQŒä¸‹é¢æˆ‘们ä‹Éç”?jQuery 与我们的合约˜q›è¡Œäº¤äº’åQ?/p><pre style="margin-top: 10px; margin-bottom: 10px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-size: 12px;"><code javascript"="" style="margin: auto; vertical-align: middle; display: block; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; height: auto; overflow-x: auto; padding: 5px !important; line-height: 1.5 !important; font-family: "Courier New", sans-serif !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">info.getInfo(<span style="margin: 0px; padding: 0px; line-height: 18px;"><span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;">function</span>(<span style="margin: 0px; padding: 0px; line-height: 18px;">error, result</span>)</span>{ <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;">if</span>(!error) { $(<span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">"#info"</span>).html(result[<span style="margin: 0px; padding: 0px; line-height: 18px;">0</span>]+<span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">' ('</span>+result[<span style="margin: 0px; padding: 0px; line-height: 18px;">1</span>]+<span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">' years old)'</span>); <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;">console</span>.log(result); } <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;">else</span> <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;">console</span>.error(error); }); $(<span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">"#button"</span>).click(<span style="margin: 0px; padding: 0px; line-height: 18px;"><span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 18px;">function</span>() </span>{ info.setInfo($(<span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">"#name"</span>).val(), $(<span style="margin: 0px; padding: 0px; color: #a31515; line-height: 18px;">"#age"</span>).val()); });</code></pre><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; font-family: verdana, "ms song", 宋体, Arial, å¾®èÊY雅黑, Helvetica, sans-serif; font-size: 12px;">以上的代码就½Ž€å•地实现了对合约中两个函数的调用åQŒåˆ†åˆ«è¯»å–和昄¡¤º<code style="margin: 1px 5px; line-height: 1.8; vertical-align: middle; display: inline-block; padding: 0px 5px !important; font-family: "Courier New", sans-serif !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">name</code>å’?code style="margin: 1px 5px; line-height: 1.8; vertical-align: middle; display: inline-block; padding: 0px 5px !important; font-family: "Courier New", sans-serif !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">age</code>变量ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; font-family: verdana, "ms song", 宋体, Arial, å¾®èÊY雅黑, Helvetica, sans-serif; font-size: 12px;">到此我们ž®±å®Œæˆäº†å…¨éƒ¨çš„代码,完整代码可以åœ?nbsp;<a style="margin: 0px; padding: 0px; color: #3b5999; text-decoration-line: none;">InfoContract</a> ä¸­æ‰¾åˆ°ã€‚在‹¹è§ˆå™¨ä¸­æ‰“å¼€<code style="margin: 1px 5px; line-height: 1.8; vertical-align: middle; display: inline-block; padding: 0px 5px !important; font-family: "Courier New", sans-serif !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">index.html</code>‹¹‹è¯•效果如下图(输入名字和年龄后åˆäh–°åQ‰ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; font-family: verdana, "ms song", 宋体, Arial, å¾®èÊY雅黑, Helvetica, sans-serif; font-size: 12px;"><img src="https://learnblockchain.cn/images/page.png" style="margin: 0px; padding: 0px; border: 0px; max-width: 720px; height: auto;" alt="" /></p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; font-family: verdana, "ms song", 宋体, Arial, å¾®èÊY雅黑, Helvetica, sans-serif; font-size: 12px;">本文的作者是盖盖åQŒä»–的微信公众号: chainlab</p><h2>参考文çŒ?/h2><ul style="margin: 0px 0px 0px 30px; padding: 0px; word-break: break-all; font-family: verdana, "ms song", 宋体, Arial, å¾®èÊY雅黑, Helvetica, sans-serif; font-size: 12px;"><li style="margin: 0px; padding: 0px; list-style: disc;"><a style="margin: 0px; padding: 0px; color: #3b5999; text-decoration-line: none;">Interacting with a Smart Contract through Web3.js (Tutorial)</a></li></ul><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; font-family: verdana, "ms song", 宋体, Arial, å¾®èÊY雅黑, Helvetica, sans-serif; font-size: 12px;">☛ <a style="margin: 0px; padding: 0px; color: #3b5999; text-decoration-line: none;">深入‹¹…出区块é“?/a> - ¾pȝ»Ÿå­¦ä¹ åŒºå—链,打造最好的区块链技术博客ã€?/p><img src ="http://www.aygfsteel.com/waterjava/aggbug/434979.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/waterjava/" target="_blank">狼爱上狸</a> 2019-12-21 14:46 <a href="http://www.aygfsteel.com/waterjava/archive/2019/12/21/434979.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>GitHub™å¹ç›®ã€ä»£ç æœç´¢ã€ä‹É用等技å·?/title><link>http://www.aygfsteel.com/waterjava/archive/2019/12/21/434977.html</link><dc:creator>狼爱上狸</dc:creator><author>狼爱上狸</author><pubDate>Sat, 21 Dec 2019 02:14:00 GMT</pubDate><guid>http://www.aygfsteel.com/waterjava/archive/2019/12/21/434977.html</guid><wfw:comment>http://www.aygfsteel.com/waterjava/comments/434977.html</wfw:comment><comments>http://www.aygfsteel.com/waterjava/archive/2019/12/21/434977.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/waterjava/comments/commentRss/434977.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/waterjava/services/trackbacks/434977.html</trackback:ping><description><![CDATA[https://blog.csdn.net/xiaomu_347/article/details/80729892<img src ="http://www.aygfsteel.com/waterjava/aggbug/434977.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/waterjava/" target="_blank">狼爱上狸</a> 2019-12-21 10:14 <a href="http://www.aygfsteel.com/waterjava/archive/2019/12/21/434977.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何åœ?GitHub 上找åˆîC½ è¦çš„代码?http://www.aygfsteel.com/waterjava/archive/2019/12/20/434976.html狼爱上狸狼爱上狸Fri, 20 Dec 2019 08:49:00 GMThttp://www.aygfsteel.com/waterjava/archive/2019/12/20/434976.htmlhttp://www.aygfsteel.com/waterjava/comments/434976.htmlhttp://www.aygfsteel.com/waterjava/archive/2019/12/20/434976.html#Feedback0http://www.aygfsteel.com/waterjava/comments/commentRss/434976.htmlhttp://www.aygfsteel.com/waterjava/services/trackbacks/434976.html

GitHub 在开源世界的受欢˜qŽç¨‹åº¦è‡ªä¸å¿…多言。再加上前阵子,GitHub 官方又搞了个大新闻:¿Uæœ‰ä»“åº“æ”¹äØ“å…è´¹ä½¿ç”¨åQŒè¿™åœ¨åŽŸæ¥å¯æ˜¯éœ€è¦çœŸé‡‘ç™½é“¶çš„ä¹°çš„ã€‚å¯è§å¾®è½¯æ”¶è´­åŽåQŒä¾ç„¶æ²¡æœ‰æ”¹å?GitHub 的定位,甚至˜q˜æ›´˜q›ä¸€æ­¥ã€?/p>

花开两朵åQŒå„è¡¨ä¸€æžã€‚æˆ‘ä»¬ä»Šå¤©æƒ³è¦èŠçš„åÆˆä¸æ˜¯ GitHub 多么厉害åQŒè€Œæ˜¯ä½?strong>怎么能把 GitHub 用得很厉å®?/strong>ã€?/p>

你在 GitHub 上搜索代码时åQŒæ˜¯æ€Žä¹ˆæ äh“ä½œçš„å‘¢ï¼Ÿæ˜¯ä¸æ˜¯å°±åƒè¿™æ øP¼Œç›´æŽ¥åœ¨æœç´¢æ¡†é‡Œè¾“入要‹‚€ç´¢çš„内容åQŒç„¶åŽä¸æ–­åœ¨åˆ—表里翻™å‰|‰¾è‡ªå·±éœ€è¦çš„内容åQ?/p>

或者是½Ž€å•筛选下åQŒåœ¨å·¦ä¾§åŠ ä¸ªè¯­è¨€çš„è¿‡æ»¤é¡¹ã€?/p>

再或者改变一下列表的排序方式

˜q™å°±æ˜¯ã€Œå…¨éƒ¨ã€äº†å—?

一般的¾pȝ»Ÿ‹‚€ç´¢åŠŸèƒ½ï¼Œéƒ½ä¼šæœ‰ä¸€ä¸ªã€Œé«˜¾U§æœç´¢ã€çš„功能。需要在另外的界面里展开åQŒè¿›è¡ŒäºŒ‹Æ¡æœç´¢ä¹‹¾cȝš„ã€?GitHub 有没有类似的呢?

½{”案是肯定的。做ä¸ÞZ¸€ä¸ªäؓ万千工程师提供服务的¾|‘ç«™åQŒä¸ä»…要有,而且˜q˜è¦æŠ€æœ¯èŒƒå„ѝ€?/p>

如果我们自己开发一个类似的应用åQŒä¼šæ€Žæ ·å®žçŽ°å‘¢ï¼Ÿ

带着思èµ\åQŒå’±ä»¬ä¸€èµäh¥çœ‹çœ‹åQŒGitHub 是怎样做的ã€?/p>

˜q™é‡Œæˆ‘们假设正要学习 Spring CloudåQŒè¦æ‰¾ä¸€ä¸?Spring Cloud çš?Demo 参考练手ã€?/p>

1. 明确搜烦仓库标题、仓库描˜q°ã€README

GitHub 提供了便æïLš„æœçƒ¦æ–¹å¼åQŒå¯ä»¥é™å®šåªæœçƒ¦ä»“库的标题、或者描˜q°ã€README½{‰ã€?/p>

以Spring Cloud ä¸ÞZ¾‹åQŒä¸€èˆ¬ä¸€ä¸ªä»“库,大概是这æ ïLš„

其中åQŒçº¢è‰²ç®­å¤´æŒ‡çš„两个地方,分别是仓库的名称和描˜q°ã€‚咱们可以直接限定关键字只查特定的地斏V€‚比如咱们只æƒÏxŸ¥æ‰¾ä»“库名¿U°åŒ…å?spring cloud 的仓库,可以使用语法

in:name 关键�/strong>

如果æƒÏxŸ¥æ‰¾æ˜q°çš„内容åQŒå¯ä»¥ä‹É用这æ ïLš„æ–¹å¼åQ?/p>

in:descripton 关键�/strong>

˜q™é‡Œž®±æ˜¯æœçƒ¦ä¸Šé¢™å¹ç›®æè¿°çš„内宏V€?/p>

一般项目,都会有个READMEæ–‡äšgåQŒå¦‚果要查该文äšg包含特定关键词的话,我想你猜åˆîCº†

in:readme 关键�/strong>

2. 明确搜烦 star、fork 数大于多ž®‘çš„

一个项ç›?star 数的多少åQŒä¸€èˆ¬ä»£è¡¨è¯¥™å¹ç›®æœ‰å—‹Æ¢è¿Ž½E‹åº¦ã€‚虽然现在也有垃åœùN¡¹ç›®åˆ· star åQŒä½†æ¯•竟是少敎ͼŒ star 依然是个不错的衡量标准ã€?/p>

stars:> 数字 关键字�/strong>

比如å’׃»¬è¦æ‰¾ star 数大äº?3000 çš„Spring Cloud 仓库åQŒå°±å¯ä»¥˜q™æ ·

stars:>3000 spring cloud

如果不加 >= 的话åQŒæ˜¯è¦ç²¾¼‹®æ‰¾ star 数等于具体数字的åQŒè¿™ä¸ªä¸€èˆ¬æœ‰ç‚¹å›°éš¾ã€?/p>

如果要找在指定数字区间的话,使用

stars: 10..20 关键�/strong>

fork 数同理,ž®†ä¸Šé¢çš„ stars 换成forkåQŒå…¶å®ƒè¯­æ³•相å?/p>

3. 明确搜烦仓库大小�/strong>

比如你只想看个简单的 DemoåQŒä¸æƒÏx‰¾ç‰¹åˆ«å¤æ‚的且占用¼‚ç›˜½Iºé—´è¾ƒå¤šçš„,可以在搜索的时候直接限定仓库的sizeã€?/p>

使用方式åQ?/p>

size:>=5000 关键�/strong>

˜q™é‡Œæ³¨æ„ä¸‹ï¼Œ˜q™ä¸ªæ•°å­—代表K, 5000代表着5Mã€?/p>

4. 明确仓库是否˜q˜åœ¨æ›´æ–°¾l´æŠ¤

我们在确认是否要使用一些开源äñ”品,框架的时候,是否¾l§ç®‹¾l´æŠ¤æ˜¯å¾ˆé‡è¦çš„一炏V€‚如果已¾lè¿‡æ—¶æ²¡äººç»´æŠ¤çš„东西åQŒè¸©äº†å‘ž®×ƒ¸å¥½åŠžäº†ã€‚è€Œåœ¨ GitHub 上找™å¹ç›®çš„æ—¶å€™ï¼Œä¸å†éœ€è¦æ¯ä¸ªéƒ½ç‚¹åˆ°™å¹ç›®é‡Œçœ‹çœ‹æœ€˜q?push 的时é—ß_¼Œç›´æŽ¥åœ¨æœç´¢æ¡†å›_¯å®Œæˆã€?/p>

元旦刚过åQŒæ¯”如咱们要找äÍ˜q‘年底依然在勤快更新的项目,ž®±å¯ä»¥ç›´æŽ¥æŒ‡å®šæ›´æ–°æ—¶é—´åœ¨å“ªä¸ªæ—‰™—´å‰æˆ–后的

通过˜q™æ ·ä¸€æ¡æœç´?strong>pushed:>2019-01-03 spring cloud

å’׃»¬ž®±æ‰¾åˆîCº†1æœ?号之后,˜q˜åœ¨æ›´æ–°çš„项目ã€?/p>

你是æƒÏx‰¾æŒ‡å®šæ—‰™—´ä¹‹å‰æˆ–之后创建的仓库也是可以的,æŠ?strong>pushedæ”ÒŽˆcreatedž®Þp¡Œã€?/p>

5. 明确搜烦仓库�LICENSE

å’׃»¬¾lå¸¸ä½¿ç”¨å¼€æºèÊYä»Óž¼Œä¸€å®šéƒ½çŸ¥é“åQŒå¼€æºèÊY件也是分不同的「门‹z¾ã€ä¸åŒçš„LICENSE。开源不½{‰äºŽä¸€åˆ‡å…è´¹ï¼Œä¸åŒçš„许可证要求也大不相同ã€?2018òq´å°±å‡ºçްäº?Facebook 修改 React 的许可协议导致各个公司纷¾U·ä¿®æ”¹è‡ªå·Þqš„代码åQŒå¯»æ‰¾æ›¿æ¢çš„æ¡†æž¶ã€?/p>

例如å’׃»¬è¦æ‰¾åè®®æ˜¯æœ€ä¸ºå®½æ„¡š„ Apache License 2 的代码,可以˜q™æ ·

license:apache-2.0 spring cloud

其它协议ž®±æŠŠ apache-2.0 替换一下即可,比如换成mit之类的ã€?/p>

6. 明确搜烦仓库的语­a€

比如å’׃»¬ž®±æ‰¾ Java 的库åQ?除了像上面在左侧点击选择之外åQŒè¿˜å¯ä»¥åœ¨æœç´¢ä¸­˜q‡æ×o。像˜q™æ ·åQ?/p>

language:java 关键�/strong>

7.明确搜烦某个人或¾l„织的仓åº?/strong>

比如å’׃»¬æƒ›_œ¨ GitHub 上找一下某个大¼œžæ˜¯ä¸æ˜¯æäº¤äº†æ–°çš„功能,ž®±å¯ä»¥æŒ‡å®šå…¶åç§°åŽæœç´¢ï¼Œä¾‹å¦‚å’׃»¬çœ‹ä¸‹ Josh Long 有没有提交新çš?Spring Cloud 的代码,可以˜q™æ ·ä½¿ç”¨

user:joshlong

¾l„合使用一下,æŠ?Java ™å¹ç›®˜q‡æ×o出来åQŒå¤šä¸ªæŸ¥è¯¢ä¹‹é—´ã€Œç©ºæ ¹{€åˆ†éš”即可ã€?/p>

user:joshlong language:java

找某个组¾l‡çš„代码话,可以˜q™æ ·åQ?/p>

org:spring-cloud

ž®±å¯ä»¥åˆ—出具体org 的仓库ã€?/p>



作者:西安北大青鸟
链接åQšhttps://www.jianshu.com/p/74ae16db62af
来源åQšç®€ä¹?br />著作权归作者所有。商业è{载请联系作者获得授权,非商业è{载请注明出处ã€?/div>

]]>
github新手使用指南http://www.aygfsteel.com/waterjava/archive/2019/12/20/434975.html狼爱上狸狼爱上狸Fri, 20 Dec 2019 07:30:00 GMThttp://www.aygfsteel.com/waterjava/archive/2019/12/20/434975.htmlhttp://www.aygfsteel.com/waterjava/comments/434975.htmlhttp://www.aygfsteel.com/waterjava/archive/2019/12/20/434975.html#Feedback0http://www.aygfsteel.com/waterjava/comments/commentRss/434975.htmlhttp://www.aygfsteel.com/waterjava/services/trackbacks/434975.html

https://blog.csdn.net/Hanani_Jia/article/details/77950594源博客地址

首先åQŒæˆ‘先对GitHub来一个简单的介绍åQŒGitHub有一个很强大的功能就是,你在服务器上边可以创å»ÞZ¸€ä¸ªåº“åQˆç¨åŽä¼šä»‹ç»æ€Žä¹ˆåˆ›å¾åQ‰ï¼Œå†™ä»£ç æ˜¯ä¸€ä»¶å¾ˆé‡çš„ä»ÕdŠ¡åQŒå°¤å…¶æ˜¯å¾ˆå¤šäººå®Œæˆä¸€ä¸ªå¾ˆå¤§çš„™å¹ç›®çš„æ—¶å€™ï¼Œž®±ååˆ†çš„复杂åQŒä¸€¾Ÿ¤äh一èµäh¥å†™æŸä¸ªé¡¹ç›®ï¼Œå¤§å®¶å®Œæˆçš„æ—¶é—ß_¼Œå®Œæˆçš„进度都是不相同的,你写一ç‚ÒŽˆ‘写一点,甚至可能你今天写的出çŽîCº†é”™è¯¯åQŒåª„响到了我昨天写的代码åQŒæœ€åŽæ€Žä¹ˆæ‰èƒ½ž®†å¤§å®¶çš„代码è½ÀL¾çš„æ±‡æ€»è“v来,又怎么在汇æ€ÀL‰€æœ‰äh的代码之后发现错误等½{‰ä¸€¾pÕdˆ—问题。这æ ähˆ‘们就用到了GitHub˜q™ä¸ªè½¯äšg。我们在GitHub服务器上有一个主仓库åQŒè¿™é‡Œç”¨æ¥å‚¨å­˜ä½ çš„æ‰€æœ‰ä»£ç ï¼Œå¦‚果不付费的话是所有äh都可以看的,如果你不惌™®©åˆ«äh看到你的代码åQŒå¯ä»¥é€‰æ‹©ä»˜è´¹ä»“库。我们创å»ÞZº†ä¸ÖM»“库之后,ž®±å¯ä»¥åœ¨ç”µè„‘上创建分支,之后你就可以在电脑上完成自己的代码,写完之后直接同步在电脑的分支åQŒå½“你认为可以上传的自己的主仓库æ—Óž¼Œž®±å¯ä»¥ç”³è¯äh›´æ–ŽÍ¼Œå½“通过审核的时候,你代码就出现在了自己的主仓库中,˜q™æ ·å…¨ä¸–界的½E‹åºå‘˜éƒ½å¯ä»¥æŸ¥çœ‹ä½ çš„代码。全世界现在已经æœ?00万的注册用户åQŒç”šè‡Œ™¿˜æœ‰ä¸€äº›ç›¸å½“知名的开源项目也在其中公布代码。在GitHub上你可以看到很多计算机领域的¾_¾è‹±æ‰€åˆ†äín的自å·Þqš„代码。这是GitHub的两个主要优点,适合团队协作åQŒä»¥åŠä¸‹è½½å…¶ä»–优¿U€è€…的代码ã€?/p>

 

 

今天åQ?/span>GitHub已是åQšä¸€ä¸ªæ‹¥æœ?43万开发者的½C‘ÖŒºã€‚其中不乏Linux发明è€?a rel="nofollow">Torvalds˜q™æ ·çš„é¡¶¾U§é»‘客,以及Rails创始äº?a rel="nofollow">DHH˜q™æ ·çš„å¹´è½ÀLžå®¢ã€?/span>

· ˜q™ä¸ªæ˜Ÿçƒä¸Šæœ€‹¹è¡Œçš„开源托½Ž¡æœåŠ¡ã€‚ç›®å‰å·²æ‰˜ç®¡431万git™å¹ç›®åQŒä¸ä»…越来越多知名开源项目迁入GitHubåQŒæ¯”如Ruby on Rails、jQuery、Ruby、Erlang/OTPåQ›è¿‘三年‹¹è¡Œçš„开源库往往在GitHub首发åQŒä¾‹å¦‚:BootStrapã€?/span>Node.jsã€?/span>CoffeScript½{‰ã€?/span>alexa全球排名414的网站ã€?img src="https://img-blog.csdn.net/20170912221840100?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvSGFuYW5pX0ppYQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

 

 

https://github.com/ ˜q™æ˜¯GitHub的官方网站,在官¾|‘上可以注册属于自己的GitHub账号åQŒç½‘上是全英文的åQŒå¯¹äºŽè‹±è¯­ä¸å¥½çš„åŒå­¦å»ø™®®ä½¿ç”¨è°äh­Œ‹¹è§ˆå™¨ï¼Œè°äh­Œ‹¹è§ˆå™¨å¯ä»¥ç¿»è¯‘网™åµå˜ä¸ÞZ¸­æ–‡ä‹É用è“v来十分方ä¾Ñ€?/p>

 

通过½Ž€å•的步骤之后你就会有一个属于自å·Þqš„GitHub账号。再½Ž€å•注册完成之后会需要验证你所输入的邮½Ž±æ‰èƒ½æ­£å¸æ€‹É用你的GitHubã€?/p>

 åœ¨æ³¨å†Œå®Œæˆä¹‹åŽï¼Œå®Œæˆä¸€äº›ç®€å•的讄¡½®ä¹‹åŽåQŒä½ éœ€è¦åˆ›å»ÞZ¸€ä¸ªå±žäºŽè‡ªå·Þqš„åº?/span>

 

在登陆自å·Þqš„GitHub账号之后åQŒåœ¨¾|‘页右上角的ž®åŠ åäh˜¯ç”¨æ¥åˆ›å¾è‡ªå·±çš„库的按钮,之后的步骤将¾|‘页¾˜»è¯‘成中文之后,按提½Cø™¿›è¡Œåˆ›å»ø™‡ªå·Þqš„库即可ã€?/p>

 

½W¬ä¸€ä¸ªæ¡†æ˜¯è‡ªå·×ƒØ“自己的库起一个名字,½W¬äºŒä¸ªæ¡†æ˜¯è‡ªå·±å¯¹åº“的一个简单介¾l?/p>

在创建完成自å·Þqš„库之后,下面ž®Þp¦è®©è‡ªå·Þqš„电脑克隆一个自己所创徏的库åQŒæ–¹é¢è‡ªå·Þq”µè„‘上的代码同步到GitHub你所创徏的库当中ã€?/p>

  ä¸ÞZº†å®žçްåQŒå°±éœ€è¦å®‰è£…一个èÊYä»Óž¼ŒGit Bashã€?/p>

 

下面我就介绍一下这个èÊY件的安装åQŒä»¥åŠç®€å•的配置ã€?/p>

git-scm.com é¦–å…ˆ˜q›å…¥GitHub官网åQŒä¸‹è½½é€‚合自己电脑的版æœ?/p>

 

下蝲完安装包之后˜qè¡Œ

 

 

 

在安装过½E‹ä¸­ç›´æŽ¥é»˜è®¤é€‰é¡¹å›_¯ã€?/p>


 åœ¨å¯¹git bash˜q›è¡Œé…ç½®çš„æ—¶å€™å¤§å¤šæ•°æ–°æ‰‹éƒ½æ˜¯ä¸€å¤´é›¾æ°ß_¼Œä¸‹é¢æˆ‘对配置的每一步就会有详细的记录。代码我也是从网上和学长那边要来的ã€?/p>

 

我第一‹Æ¡æ‰“开软äšg后看到这个界面也是一脸懵逼的åQŒç„¶åŽé€šè¿‡æŸ¥é˜…了各¿Uå„æ ïLš„资料之后才有了一些思èµ\ã€?/p>

 é¦–先要在本地创徏一ä¸?/span>ssh key ˜q™ä¸ªçš„目的就是你现在需要在你电脑上获得一个密匙,ž®±æ˜¯å’׃»¬òqÏx—¶çš„验证码一æ ïLš„东西åQŒèŽ·å–ä¹‹åŽï¼Œåœ¨ä½ çš?/span>GitHub账号里边输入之后åQŒä½ çš„电脑就和你的GitHub账号联系在一起了åQŒè¿™æ ·ä»¥åŽå°±å¯ä»¥ååˆ†æ–¹ä¾¿çš„通过Git bash 随时上传你的代码。下边介¾lä¸€ä¸‹å¦‚果获得这个钥匙,又是如何输入åˆîC½ çš„GitHub里边的呢ã€?/span>

  

很多人第一‹Æ¡æ‰“å¼€˜q™ä¸ªGitHub的时候一脸懵é€û|¼Œè®¤äØ“˜q™æ˜¯ä»€ä¹ˆã€‚对于一个新手来说看到这个是没有ä»ÖM½•思èµ\åQŒæ²¡æœ‰ä“Q何想法的ã€?/span>

˜q™ä¸€æ ?/span> å¼€å§‹æ˜¯ä½ çš„计算机的名字在我˜q™é‡Œž®±æ˜¯Hanani @后边的内å®ÒŽ˜¯ä½ çš„è®¡ç®—æœºåž‹åøP¼Œå¾ˆå¤šæ—¶å€™æœ‰çš„äh打开之后@åŽè¾¹æ˜¯äØ•ç ï¼Œ˜q™ä¸ªæ—¶å€™ä¹Ÿä¸è¦åœ¨æ„åQŒå› ä¸ºæœ‰äº›ç”µè„‘åž‹åäh˜¯ä¸­æ–‡çš„,可能在显½Cºçš„æ—¶å€™å‡ºçŽîCº†é—®é¢˜åQŒä¸å½±å“ä½ åŽæœŸçš„æ“ä½œã€?/span>

  æŽ¥ä¸‹æ¥ï¼Œž®Þp¦å¼€å§‹èŽ·å–å±žäºŽä½ è‡ªå·±çš„å¯†åŒ™ã€‚åœ¨git bash中所有功能都是通过½Ž€å•的一些代码来实现的。获取密匙的时候需要输å…?/span>

$ ssh-keygen -t rsa -"your_email@youremail.com"

需要输入这个代码,引号内需要改成你在注å†?/span>GitHub的时候绑定的邮箱账号。之后会有一些简单的让你¼‹®è®¤çš„æ“ä½œï¼Œä¹‹åŽè®©ä½ ä¼šæ½Cºæ“ä½œèµ\径、密码等½{‰ï¼Œä¸€èˆ¬æƒ…况下ž®Þq›´æŽ¥æŒ‰å›žèžR一路过ž®±å¯ä»¥ã€?/span>

 

如果之后你出çŽîCº†˜q™ä¸ªç•Œé¢ä¹‹åŽåQŒå°±è¯´æ˜Žä½ çš„密匙已经成功创徏了。现在你ž®±éœ€è¦åŽ»ä»–åˆšåˆšæ˜¾½Cºçš„存储位置打开它,把其中的内容复制出来ã€?/span>


 

åœ?/span>.ssh˜q™ä¸ªæ–‡äšg夹中

之后你会看到˜q™äº›å†…容åQŒæœ‰çš„äh会在id_rsa后边带有一个pubåQŒä¹‹å‰çœ‹¾|‘上教程需要找到带pub的文ä»Óž¼Œå› äؓ我在生成后没有带.pub的文ä»Óž¼Œæ€€ç€å¿å¿‘的心打开id_rsa后发现这里边的密匙也是可以ä‹É用的。打开id_rsa的时候需要用è®îCº‹æœ¬çš„æ–¹å¼æ‰“å¼€ã€?/span>

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDIskXqZF3SSFtACK6zoNGJabikTBC3kig6+4j4dCq1tswhA9YkuJCi0WpRmGYWBQ67dyT2or7RedFZlULLZN3nL6AWlo5V2jRXw4WQxCon2rU1p122wmiTzqYOfsykjwullWV4bYcZU4n77A4/9WwlSqZCpEbcdwV8IMkvwfJUInSWqTvmYMcKTWu8yad5DZ2v7LBWfgsL/Tfx7aEB8UjDNJ6SPw30Yijy+62YrftYGgbuwoiL9hDNGO2LfjgOkglHTBJaZe31uQLLWc5uCzd+7Dgh7RaKMmeuz2Uv7yqm/IEU9jH8cPMR9YRPIhmzg38G2s9ILn27QqW9j1hrFY1V 15229020556@163.com

˜q™å°±æ˜¯æˆ‘所获取的密匙,打开之后很长的一ŒDµï¼Œä¸è¦æƒŠè®¶åQŒæ²¡æœ‰é—®é¢˜ï¼Œ˜q™å°±æ˜¯ä½ æ‰€éœ€è¦çš„密匙ã€?/span>

 çŽ°åœ¨ä½ å°±éœ€è¦ç™»å½•åˆ°ä½ çš„GitHub上边æ·ÕdŠ ˜q™ä¸ªå¯†åŒ™åQ?/span>

 

 

打开ä½?/span>GitHub的设¾|®ç•Œé¢ï¼Œæ‰‘Öˆ°SSH and GPG keys˜q™ä¸ªé€‰é¡¹ä¹‹åŽåQŒåœ¨¾|‘页右上角有一个添加新的SSH keys 点击

 

˜q™é‡Œçš?/span>title 是让你给你的密匙起一个名字,æ ÒŽ®ä¸ªäh喜好åQŒä»€ä¹ˆåå­—都可以åQŒç„¶åŽæŠŠä½ åœ¨åˆšåˆšæ–‡äšg中复制的密匙åQŒå¡«å†™åœ¨ä¸‹è¾¹çš„大框里。保存即可ã€?/p>

之后你就可以回到你的Git bash上边�/p>

然后输入上边的代码,来检查是否成功绑定。第一‹Æ¡ç»‘定的时候输入上边的代码之后会提½Cºæ˜¯å?/span>continueåQŒåœ¨è¾“å…¥yes后如果出çŽîCº†åQ?/span>You've successfully authenticated, but GitHub does not provide shell access ã€?/span>那就说明åQŒå·²¾læˆåŠŸè¿žä¸Šäº†GitHub。接下来˜q˜éœ€è¦ç®€å•的讄¡½®ä¸€äº›ä¸œè¥Ñ€?/span>

输入上边的代码,name最好和GitHubä¸Šè¾¹çš„ä¸€æ øP¼Œemail是一定要是注册GitHub的那个邮½Ž±åœ°å€

˜q™ä¸¤ä¸ªçš„™åºåºå¯ä»¥é¢ å€’,没有固定的顺序ã€?/span>

 ä¸‹é¢ž®Þp¦ž®†ä½ çš„库克隆下来到本地电脑中åQŒæ–¹ä¾¿ä»¥åŽè¿›è¡Œä¸Šä¼ ä»£ç ã€?/span>

 

在库创徏完成之后 ä¼šæœ‰ä¸€ä¸ªç½‘址出现在网™åµä¸­ã€?/span>

 

个äh习惯ž®†è‡ªå·Þqš„æ–‡äšg储存åœ?/span>d盘之中,所以你先需要将git bash定位在d盘中

 

åœ?/span>git bash中输å…?cd /D 注意盘名字一定要是大写。如不输入这个语å?不给git bash定位的话åQŒé»˜è®¤çš„æœ¬åœ°æ–‡äšg位置是在c盘中ã€?/p>

输入之后会出�/span>/D说明定位成功�/p>

之后输入

git clone后边的网址ž®±æ˜¯ä½ åˆ›å»ºåº“成功之后的网址


之后打开我所定位�/span>D�/p>

 

可以看到åQ?/span>D盘中已经有以我的库名所创徏的文件夹了ã€?/p>


打开˜q™ä¸ªæ–‡äšg夹,然后在其中创å»ÞZ¸€ä¸ªä“Q意格式,ä»ÀL„åç§°çš„æ–‡ä»¶ã€?/p>

 

之后重新定位git 把书 的位¾|®ï¼Œå®šä½åœ¨ä½ åº“的文äšg夏V€?/p>


之后输入ls语句 ls的作用是查看你目前所定位的文件夹中的文äšgåQŒçŽ°åœ¨å¯ä»¥çœ‹å‡ºæ¥åQŒæˆ‘刚刚所创徏的testæ–‡äšg已经出现了ã€?/p>


然后输入 git add test.txt

之后输入然后git commit -m "cc"  å¼•号内的内容可以随意改动åQŒè¿™ä¸ªè¯­å¥çš„æ„æ€æ˜¯ ¾l™ä½ åˆšåˆšä¸Šä¼ çš„æ–‡ä»¶ä¸€ä¸ªå¤‡æ³¨ï¼Œæ–¹ä¾¿æŸ¥æ‰¾è®°å¿†è€Œå·²


输入之后出现以上情况åQŒç„¶åŽåœ¨è¾“å…¥git push origin master 之后会出çŽîC¸€ä¸?/p>

 

 

界面åQŒåœ¨˜q™é‡Œç™»é™†ä½ ä¹‹å‰æ³¨å†Œçš„GitHub账号之后点击loginã€?/p>

 

如果之后出现˜q™ç§æƒ…况的话åQŒå°±æ˜¯ç™»é™†å¤±è´¥äº†åQŒè¿™æ—¶å€™ä½ ž®±éœ€è¦è¾“入你GitHubçš„è̎号名¿U?/p>

输入之后会出现这个界面,然后再次输入你的GitHub密码�/p>


出现¾cÖM¼¼ç•Œé¢åQŒä½ ž®±å¯ä»¥æ¬¢å‘égº†åQŒä»£è¡¨ä½ æˆåŠŸäº†ã€?/p>

现在打开你的GitHub¾|‘ç«™åQŒæ‰¾åˆîC½ åˆ›å¾çš„库

 

发现今天的格子已¾lç»¿äº†ï¼Œè¯´æ˜Žä½ å·²¾lä¸Šä¼ äº†ä½ åˆšåˆšæ‰€åˆ›å¾çš„æ–‡ä»¶ã€?/p>

再之后,你只需要将你的代码åQŒæ”¾åˆ°åº“的对应的文äšg夹中åQŒç„¶åŽä‹Éç”?å…ˆCDåˆîC½ åº“里面,å†?/span>git add 、git commit -m "   " ã€?span style="font-family:'宋体';">最å?/span>git push origin masteråQŒå°†ä½ çš„代码提交ž®±å¯ä»¥äº†ã€?/p>

 åŒæ ·æˆ‘感觉网™å늉ˆçš„github更适合新手ž®ç™½åQŒhttps://blog.csdn.net/hanani_jia/article/details/79855429 ˜q™æ˜¯æˆ‘写的一½‹‡ç½‘™å늉ˆgithub的简单操作,需要的可以看一下ã€?/p>

]]>
TypeError: Cannot read property 'address' of undefinedhttp://www.aygfsteel.com/waterjava/archive/2019/12/18/434973.html狼爱上狸狼爱上狸Wed, 18 Dec 2019 11:27:00 GMThttp://www.aygfsteel.com/waterjava/archive/2019/12/18/434973.htmlhttp://www.aygfsteel.com/waterjava/comments/434973.htmlhttp://www.aygfsteel.com/waterjava/archive/2019/12/18/434973.html#Feedback0http://www.aygfsteel.com/waterjava/comments/commentRss/434973.htmlhttp://www.aygfsteel.com/waterjava/services/trackbacks/434973.html                     ^

TypeError: Cannot read property 'address' of undefined
解决办法åQšè°ƒæ•´gas的值就好了ã€?/div>

]]>ä»¥å¤ªåŠä¸Šæœ€å¤šå­˜æ”‘Ö¤šž®‘å­—èŠ?成本如何?http://www.aygfsteel.com/waterjava/archive/2019/12/16/434966.html狼爱上狸狼爱上狸Mon, 16 Dec 2019 01:28:00 GMThttp://www.aygfsteel.com/waterjava/archive/2019/12/16/434966.htmlhttp://www.aygfsteel.com/waterjava/comments/434966.htmlhttp://www.aygfsteel.com/waterjava/archive/2019/12/16/434966.html#Feedback0http://www.aygfsteel.com/waterjava/comments/commentRss/434966.htmlhttp://www.aygfsteel.com/waterjava/services/trackbacks/434966.html

]]>
¾|‘络在线工具http://www.aygfsteel.com/waterjava/archive/2019/12/16/434965.html狼爱上狸狼爱上狸Mon, 16 Dec 2019 01:16:00 GMThttp://www.aygfsteel.com/waterjava/archive/2019/12/16/434965.htmlhttp://www.aygfsteel.com/waterjava/comments/434965.htmlhttp://www.aygfsteel.com/waterjava/archive/2019/12/16/434965.html#Feedback0http://www.aygfsteel.com/waterjava/comments/commentRss/434965.htmlhttp://www.aygfsteel.com/waterjava/services/trackbacks/434965.html

]]>
以太坊区块链的区块(BlockåQ‰ç»“æž?/title><link>http://www.aygfsteel.com/waterjava/archive/2019/12/16/434964.html</link><dc:creator>狼爱上狸</dc:creator><author>狼爱上狸</author><pubDate>Mon, 16 Dec 2019 00:40:00 GMT</pubDate><guid>http://www.aygfsteel.com/waterjava/archive/2019/12/16/434964.html</guid><wfw:comment>http://www.aygfsteel.com/waterjava/comments/434964.html</wfw:comment><comments>http://www.aygfsteel.com/waterjava/archive/2019/12/16/434964.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/waterjava/comments/commentRss/434964.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/waterjava/services/trackbacks/434964.html</trackback:ping><description><![CDATA[https://blog.csdn.net/luoye4321/article/details/82531212<img src ="http://www.aygfsteel.com/waterjava/aggbug/434964.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/waterjava/" target="_blank">狼爱上狸</a> 2019-12-16 08:40 <a href="http://www.aygfsteel.com/waterjava/archive/2019/12/16/434964.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>以太坊·将数据写入到区块链ä¸?/title><link>http://www.aygfsteel.com/waterjava/archive/2019/12/13/434961.html</link><dc:creator>狼爱上狸</dc:creator><author>狼爱上狸</author><pubDate>Fri, 13 Dec 2019 10:16:00 GMT</pubDate><guid>http://www.aygfsteel.com/waterjava/archive/2019/12/13/434961.html</guid><wfw:comment>http://www.aygfsteel.com/waterjava/comments/434961.html</wfw:comment><comments>http://www.aygfsteel.com/waterjava/archive/2019/12/13/434961.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/waterjava/comments/commentRss/434961.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/waterjava/services/trackbacks/434961.html</trackback:ping><description><![CDATA[https://blog.csdn.net/weixin_34055787/article/details/89733910<img src ="http://www.aygfsteel.com/waterjava/aggbug/434961.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/waterjava/" target="_blank">狼爱上狸</a> 2019-12-13 18:16 <a href="http://www.aygfsteel.com/waterjava/archive/2019/12/13/434961.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Visual Studio 2015下蝲http://www.aygfsteel.com/waterjava/archive/2019/12/01/434940.html狼爱上狸狼爱上狸Sun, 01 Dec 2019 04:30:00 GMThttp://www.aygfsteel.com/waterjava/archive/2019/12/01/434940.htmlhttp://www.aygfsteel.com/waterjava/comments/434940.htmlhttp://www.aygfsteel.com/waterjava/archive/2019/12/01/434940.html#Feedback0http://www.aygfsteel.com/waterjava/comments/commentRss/434940.htmlhttp://www.aygfsteel.com/waterjava/services/trackbacks/434940.html本文链接åQšhttps://blog.csdn.net/yezishuang/article/details/91489354

1.Visual Studio 2015 专业版和企业版下�br />
https://www.cnblogs.com/bwlluck/p/5514424.html

https://www.cnblogs.com/wgscd/p/4671374.html

 

2.Visual Studio 2013

https://www.cnblogs.com/abeam/p/6781006.html

 

3.Visual Studio 2017

https://www.cnblogs.com/jian-pan/p/6942635.html

Microsoft Visual Studio Enterprise 2017 企业ç‰?br />KEYåQšNJVYC-BMHX2-G77MM-4XJMR-6Q8QF
Microsoft Visual Studio Professional 2017 专业ç‰?br />KEYåQšKBJFW-NXHK6-W4WJM-CRMQB-G3CDH

 

4.Visual Studio 2019

https://www.cnblogs.com/zengxiangzhan/p/vs2015.html

https://visualstudio.microsoft.com/zh-hans/downloads/ åQˆä¸‹è½½åœ°å€åQ?br />
 Visual Studio 2019 Enterprise
BF8Y8-GN2QH-T84XB-QVY3B-RC4DF

Visual Studio 2019 Professional
NYWVH-HT4XC-R2WYW-9Y3CM-X4V3Y


]]>
使用Remix IDE快速部¾|²ä½ çš„第一个智能合¾U?/title><link>http://www.aygfsteel.com/waterjava/archive/2019/11/28/434938.html</link><dc:creator>狼爱上狸</dc:creator><author>狼爱上狸</author><pubDate>Thu, 28 Nov 2019 13:01:00 GMT</pubDate><guid>http://www.aygfsteel.com/waterjava/archive/2019/11/28/434938.html</guid><wfw:comment>http://www.aygfsteel.com/waterjava/comments/434938.html</wfw:comment><comments>http://www.aygfsteel.com/waterjava/archive/2019/11/28/434938.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/waterjava/comments/commentRss/434938.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/waterjava/services/trackbacks/434938.html</trackback:ping><description><![CDATA[https://blog.csdn.net/qq_27317475/article/details/80894593<img src ="http://www.aygfsteel.com/waterjava/aggbug/434938.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/waterjava/" target="_blank">狼爱上狸</a> 2019-11-28 21:01 <a href="http://www.aygfsteel.com/waterjava/archive/2019/11/28/434938.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>genesis.json的问é¢?/title><link>http://www.aygfsteel.com/waterjava/archive/2019/11/28/434937.html</link><dc:creator>狼爱上狸</dc:creator><author>狼爱上狸</author><pubDate>Thu, 28 Nov 2019 11:15:00 GMT</pubDate><guid>http://www.aygfsteel.com/waterjava/archive/2019/11/28/434937.html</guid><wfw:comment>http://www.aygfsteel.com/waterjava/comments/434937.html</wfw:comment><comments>http://www.aygfsteel.com/waterjava/archive/2019/11/28/434937.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/waterjava/comments/commentRss/434937.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/waterjava/services/trackbacks/434937.html</trackback:ping><description><![CDATA[<div> 以前的genesis.json的文件差不多是这æ ïLš„åQ?/div><div>    {<br />      "config": {<br />            "chainId": 10,<br />            "homesteadBlock": 0,<br />            "eip155Block": 0,<br />            "eip158Block": 0<br />        },<br />      "alloc"      : {},<br />      "coinbase"   : "0x0000000000000000000000000000000000000000",<br />      "difficulty" : "0x00000002",<br />      "extraData"  : "",<br />      "gasLimit"   : "0x2fefd8",<br />      "nonce"      : "0x0000000000000042",<br />      "mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",<br />      "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",<br />      "timestamp"  : "0x00"<br />    }</div><div>用这个创世块的描˜q°æ–‡ä»¶åˆå§‹åŒ–æ—Óž¼Œå‡ºçŽ°é”™è¯¯åQ?/div><div>Fatal: Failed to write genesis block: unsupported fork ordering: eip150Block not enabled, but eip155Block enabled at 0</div><div>癑ֺ¦å§ï¼Œæ²¡æœ‰ä¸€ä¸ªè§£å†›_Šžæ³•ã€?/div><div>后来用Puppeth命ä×o创徏jsonæ–‡äšgåQŒåƈ做了修改åQŒå¦‚下所½Cºï¼š</div><div><pre style="background-color: #ffffff; color: #000000; font-family: "宋体"; font-size: 9pt;">{<br /> <span style="color:#660e7a;font-weight:bold;">"config"</span>: {<br /> <span style="color:#660e7a;font-weight:bold;">"chainId"</span>: <span style="color:#0000ff;">666</span>,<br /> <span style="color:#660e7a;font-weight:bold;">"homesteadBlock"</span>: <span style="color:#0000ff;">0</span>,<br /> <span style="color:#660e7a;font-weight:bold;">"eip150Block"</span>: <span style="color:#0000ff;">0</span>,<br /> <span style="color:#660e7a;font-weight:bold;">"eip150Hash"</span>: <span style="color:#008000;font-weight:bold;">"0x0000000000000000000000000000000000000000000000000000000000000000"</span>,<br /> <span style="color:#660e7a;font-weight:bold;">"eip155Block"</span>: <span style="color:#0000ff;">0</span>,<br /> <span style="color:#660e7a;font-weight:bold;">"eip158Block"</span>: <span style="color:#0000ff;">0</span>,<br /> <span style="color:#660e7a;font-weight:bold;">"byzantiumBlock"</span>: <span style="color:#0000ff;">0</span>,<br /> <span style="color:#660e7a;font-weight:bold;">"constantinopleBlock"</span>: <span style="color:#0000ff;">0</span>,<br /> <span style="color:#660e7a;font-weight:bold;">"petersburgBlock"</span>: <span style="color:#0000ff;">0</span>,<br /> <span style="color:#660e7a;font-weight:bold;">"istanbulBlock"</span>: <span style="color:#0000ff;">0</span>,<br /> <span style="color:#660e7a;font-weight:bold;">"ethash"</span>: {}<br /> },<br /> <span style="color:#660e7a;font-weight:bold;">"nonce"</span>: <span style="color:#008000;font-weight:bold;">"0x0"</span>,<br /> <span style="color:#660e7a;font-weight:bold;">"timestamp"</span>: <span style="color:#008000;font-weight:bold;">"0x5ddf8f3e"</span>,<br /> <span style="color:#660e7a;font-weight:bold;">"extraData"</span>: <span style="color:#008000;font-weight:bold;">"0x0000000000000000000000000000000000000000000000000000000000000000"</span>,<br /> <span style="color:#660e7a;font-weight:bold;">"gasLimit"</span>: <span style="color:#008000;font-weight:bold;">"0x47b760"</span>,<br /> <span style="color:#660e7a;font-weight:bold;">"difficulty"</span>: <span style="color:#008000;font-weight:bold;">"0x00002"</span>,<br /> <span style="color:#660e7a;font-weight:bold;">"mixHash"</span>: <span style="color:#008000;font-weight:bold;">"0x0000000000000000000000000000000000000000000000000000000000000000"</span>,<br /> <span style="color:#660e7a;font-weight:bold;">"coinbase"</span>: <span style="color:#008000;font-weight:bold;">"0x0000000000000000000000000000000000000000"</span>,<br /> <span style="color:#660e7a;font-weight:bold;">"alloc"</span>: { }<br /> },<br /> <span style="color:#008000;font-weight:bold;">"number"</span>: <span style="color:#008000;font-weight:bold;">"0x0"</span>,<br /> <span style="color:#008000;font-weight:bold;">"gasUsed"</span>: <span style="color:#008000;font-weight:bold;">"0x0"</span>,<br /> <span style="color:#008000;font-weight:bold;">"parentHash"</span>: <span style="color:#008000;font-weight:bold;">"0x0000000000000000000000000000000000000000000000000000000000000000"<br /></span>}<br /><br /><br /><br />初始化:<br />geth --identity "MyEth" --rpc --rpcport "8545" --rpccorsdomain "*" --datadir gethdata --port "30303" --nodiscover --rpcapi "db,eth,net,personal,web3" --networkid 1999 init genesis.json<br /></pre></div><div>控制収ͼš</div><div>geth --identity "MyEth" --rpc --rpcport "8545" --rpccorsdomain "*" --datadir gethdata --port "30303" --nodiscover --rpcapi "db,eth,net,personal,web3" --networkid 1999 --dev.period 1 console</div><div>建立用户åQ?/div><div>>personal.newAccount();</div><div>挖矿åQ?/div><div>miner.start();</div><div></div><div>¾lˆäºŽ™åºåˆ©æŒ–到了äh生第一桉™‡‘ã€?/div><div></div><img src ="http://www.aygfsteel.com/waterjava/aggbug/434937.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/waterjava/" target="_blank">狼爱上狸</a> 2019-11-28 19:15 <a href="http://www.aygfsteel.com/waterjava/archive/2019/11/28/434937.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>windows使用geth搭徏以太坊私é“?http://www.aygfsteel.com/waterjava/archive/2019/11/28/434935.html狼爱上狸狼爱上狸Thu, 28 Nov 2019 09:08:00 GMThttp://www.aygfsteel.com/waterjava/archive/2019/11/28/434935.htmlhttp://www.aygfsteel.com/waterjava/comments/434935.htmlhttp://www.aygfsteel.com/waterjava/archive/2019/11/28/434935.html#Feedback0http://www.aygfsteel.com/waterjava/comments/commentRss/434935.htmlhttp://www.aygfsteel.com/waterjava/services/trackbacks/434935.html½W¬ä¸€æ­?安装geth

下蝲地址åQ?a target="_blank">https://ethereum.github.io/go-ethereum/downloads/

点击安装å‹ùN€‰development tools

1.png

½W¬äºŒæ­?创徏您的帐户

在当前文件夹下创建node1æ–‡äšgå¤?/h3>

创徏一个èÌŽæˆøP¼ˆä¹Ÿç§°ä¸ºé’±åŒ…)

Devnet $ geth --datadir node1/ account new
Your new account is locked with a password. Please give a password. Do not forget this password.
Passphrase: 输入你的密码
Repeat passphrase: ¼‹®è®¤ä½ çš„密码
Address: {08a58f09194e403d02a1928a7bf78646cfc260b0}

½W¬ä¸‰æ­?geth命ä×o创徏您的Genesisæ–‡äšg

生成的文件是用于初始化区块链的文件。第一个块叫做创世块,是根据genesis.jsonæ–‡äšg中的参数生成的ã€?/p>

Geth安装后目录下有很多可执行文äšg如puppeth或bootnode。你可以åœ?a target="_blank">Geth github上找到完整的列表ã€?br /> Puppeth可以创徏创世区块的jsonæ–‡äšgã€?br /> 开始ä‹É用PuppethåQ?/p>

1、winé”?+ r ˜q›å…¥cmd命ä×o行,˜q›å…¥åˆ°å®‰è£…geth的文件夹执行 puppeth 然后™åºåºæ‰§è¡Œä¸‹é¢æ“ä½œ

2、Please specify a network name to administer (no spaces, please)
> devnetåQˆè¿™é‡Œéšä¾¿å¡«å†™ä¸€ä¸ªç½‘¾lœç®¡ç†å¿U°å³å¯ï¼Œå¦‚有需要后面可以通过--network重新讄¡½®åQ?br /> What would you like to do? (default = stats)
 1. Show network stats
 2. Configure new genesis
 3. Track new remote server
 4. Deploy network components

> 2åQˆè¿™é‡Œé€‰æ‹©2åQŒå›žè½¦ï¼Œé…ç½®æ–°çš„创世区块åQ?/p>

3、Which consensus engine to use? (default = clique)
   1. Ethash - proof-of-work
   2. Clique - proof-of-authorit

> 1åQˆè¿™é‡Œé€‰æ‹©powå…Þp¯†æœºåˆ¶åQ?/p>

4、Which accounts should be pre-funded? (advisable at least one)

> 0x1234567890123456789012345678901234567890åQˆè¿™ä¸ªæ˜¯è®„¡½®é¢„分配以太坊的èÌŽæˆøP¼Œå»ø™®®è®„¡½®ä¸€ä¸ªæœ‰¿Ué’¥çš„地址可以后面‹¹‹è¯•使用åQŒè®¾¾|®å¥½åŽå†æŒ‰ä¸€‹Æ¡å›žè½¦ï¼‰

5、Specify your chain/network ID if you want an explicit one (default = random)
> 666åQˆè¿™é‡Œå°±æ˜¯é“¾çš„chainIdåQŒå¯ä»¥éšæ„è¾“入也可以不输直接回èžR默认随机数字åQ?/p>

6、What would you like to do? (default = stats)

  1. Show network stats
  2. Manage existing genesis
  3. Track new remote server
  4. Deploy network components
    > 2åQˆç®¡ç†å·²æ‹¥æœ‰çš„创世块åQ?/li>

7�1. Modify existing fork rules
2. Export genesis configuration
3. Remove genesis configuration
> 2åQˆé€‰æ‹©å¯¼å‡ºåˆ›ä¸–配置åQ?/p>

8、Which file to save the genesis into? (default = devnet.json)
> ./genesis.jsonåQˆå¯¼å‡ºçš„路径及文件名åQ?/p>

OK,到这里创世jsonæ–‡äšg创徏完成äº?/p>

½W¬å››æ­?geth命ä×o初始化节ç‚?/h2>

现在我们有了˜q™ä¸ªgenesis.jsonæ–‡äšgåQŒå¯ä»¥åˆå§‹åŒ–创世块了åQ?/p>

˜q›å…¥åˆ°geth安装文äšg夹下执行

geth --datadir node1/ init genesis.json

½W¬äº”æ­?bootnode命ä×o操作

bootnode唯一的目的是帮助节点发现彼此åQˆè®°ä½ï¼Œä»¥å¤ªåŠåŒºå—链是一个对½{‰ç½‘¾lœï¼‰

初始�bootnode

bootnode -genkey boot.Key

启动bootnode服务

bootnode -nodekey boot.key -addr:30310

随意使用ä»ÖM½•您喜‹Æ¢çš„端口åQŒä½†è¯·é¿å…ä‹É用主‹¹ç«¯å£ï¼ˆä¾‹å¦‚HTTPåQ‰ã€?0303用于公共以太坊网¾lœã€?/p>

½W¬å…­æ­?geth命ä×o启动节点

geth --datadir .\node1\ --syncmode 'full' --port 30311 --rpc --rpcaddr '127.0.0.1' --rpcport 8501 --rpcapi  'personal,db,eth,net,web3,txpool,miner' --bootnodes 'enode://ca88962dbcc8eb0c7587789866f21db68cdf32ad1ea890fe0d9f8fe010f7e9afe2e6a88d5c9d418be61a10b8a31b1e7c55213bb426dab91596ae36bd7d559333@127.0.0.1:30310' --networkid 666

参数解释åQ?/p>

--syncmode 'full' 有助于防止错�a target="_blank">丢弃错误的传播块�br /> --port 是node1的端�br /> --rpcapi 允许RPC调用的模�br /> --bootnodes 要连接的bootnode
--networkId genesis.jsonæ–‡äšg中的chainId

½W¬ä¸ƒæ­?与您的节点进行交äº?/h2>

通过RPC方式

$ cd devnet
devnet$ geth attach 'http://localhost:8501'
Welcome to the Geth JavaScript console!

instance: Geth/v1.7.3-stable-4bb3c89d/linux-amd64/go1.9
coinbase: 0x87366ef81db496edd0ea2055ca605e8686eec1e6
at block: 945 (Sat, 10 Feb 2018 21:16:14 CET)
 modules: eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0

使用Geth控制�/p>

>net.version
"1515"
> eth.blockNumber
1910
> eth.coinbase
"0x87366ef81db496edd0ea2055ca605e8686eec1e6"
> eth.sendTransaction({'from':eth.coinbase, 'to':'0x08a58f09194e403d02a1928a7bf78646cfc260b0', 'value':web3.toWei(3, 'ether')})
"0x299a99baa1b39bdee5f02e3c660e19e744f81c2e886b5fc24aa83f92fe100d3f"
>eth.getTransactionReceipt("0x299a99baa1b39bdee5f02e3c660e19e744f81c2e886b5fc24aa83f92fe100d3f")
{
  blockHash: "0x212fb593980bd42fcaf3f6d1e6db2dd86d3764df8cac2d90408f481ae7830de8",
  blockNumber: 2079,
  contractAddress: null,
  cumulativeGasUsed: 21000,
  from: "0x87366ef81db496edd0ea2055ca605e8686eec1e6",
  gasUsed: 21000,
  logs: [],
  logsBloom: "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
  status: "0x1",
  to: "0x08a58f09194e403d02a1928a7bf78646cfc260b0",
  transactionHash: "0x299a99baa1b39bdee5f02e3c660e19e744f81c2e886b5fc24aa83f92fe100d3f",
  transactionIndex: 0
}
> exitåQˆé€€å‡ºï¼‰


来自:https://www.haowenbo.com/articles/2019/07/24/1563963176492.html



]]> Ö÷Õ¾Ö©Öë³ØÄ£°å£º Î÷°²ÊÐ| ̽Ë÷| ÄÒÇ«ÏØ| ÈݳÇÏØ| ɳºÓÊÐ| ̨±±ÏØ| ÎäÒØÏØ| ÃáÄþÏØ| ¹àÄÏÏØ| ½»¿ÚÏØ| Ì«ºÍÏØ| ÆÕ¸ñÏØ| Ì©°²ÊÐ| ÓÀÊÙÏØ| Ô­ÑôÏØ| °¢À­ÉÆÃË| ¸Ê×ÎÏØ| ³µÏÕ| ¸·ÐÂ| µü²¿ÏØ| Îå·å| кÍÏØ| ¾°Ì©ÏØ| ±±³½Çø| Îå»ªÏØ| ½­ÓÀÏØ| ¹ã·áÏØ| ̨ÍåÊ¡| ãë´¨ÏØ| ËÕÄáÌØ×óÆì| Öн­ÏØ| ºÍÁÖ¸ñ¶ûÏØ| ¸ßÃÜÊÐ| ¼ÎÏéÏØ| ¸£ÈªÊÐ| Îİ²ÏØ| »Ý°²ÏØ| ¡ÁÖ| ÏÉÓÎÏØ| ÖÓÉ½ÏØ| ½Á¼ÏØ|