木星链 木星链
Ctrl+D收藏木星链
首页 > MATIC > 正文

以太坊:区块链研究实验室 | 使用JavaScript编译和部署以太坊智能合约

作者:

时间:1900/1/1 0:00:00

以太坊智能合约的发展在2018年呈指数级增长,2019年似乎将遵循这一趋势。有些框架,如Truffle,可以帮助我们快速构建和维护智能合约,如果您想让亲自动手体验的话,我将解释如何编译您的智能合约,并使用自己的脚本将其部署到以太坊网络。

注意:我将使用简单的智能合约,因为本文的目的只是展示如何编译和部署脚本。

项目具有以下结构:

文件夹合同包含我们的智能合约。对于这篇文章,我们将使用两个简单的智能合约:

MyContractA.sol

MyContractA.sol

如您所见,我们有两个文件,其中一个包含两个智能合约,证明我们可以拥有任意数量的智能合约。

脚本编译

现在,一旦我们有了初始项目结构和智能合约,就可以开始构建编译脚本了。

LG、Hashed退出Klaytn区块链管理委员会:金色财经报道,LG、Hashed退出Klaytn区块链管理委员会。[2023/5/15 15:04:02]

该脚本的目的是为每个合约生成一个JSON,每个JSON都包含已编译的合同信息。这些JSON将存储在名为build/的输出路径中

构建脚本的步骤如下:

创建构建/目录。

获取我们的合同来源。

编译合同并将输出写入文件。

第1步-创建build/文件夹。

这一步是最简单的,因为我们只需要了解JavaScript的一些基础知识。

现在要将所有文件的来源都放到智能合约文件夹中。在这一步中,只需要JavaScript就不需要以太坊概念,但还是有点复杂。

声音 | 信通院云大所所长何宝宏:疫情下区块链助力公益平台建设:信通院云大所所长何宝宏在接受采访时表示,“区块链在疫情之后,或者说在防控疫情方面大有可为。在何宝宏看来,区块链可以在4方面助力公益。第一,区块链用于公益可以让公益数据更加透明可信,比如捐赠溯源等;第二,从人员的角度来看,区块链让参与人员常存敬畏之心,因为数据是公开的,每个人都能看到,防篡改、可追溯、公开透明;第三从机构的角度来看,可以让公益组织运行地更高效,数字化运营,数字化管理;第四,从监管角度来看,让监管机构能够及时地跟进。(通信世界网)[2020/2/20]

对于contracts文件夹中的每个文件,我们在sources对象中添加一个新字段,其中键是文件名,值是.sol文件的内容。

第3步-编译并写入输出

现在我们已经有了输出文件夹和智能合约的内容,是时候编译它们了。

声音 | 合肥工业大学校长:运用区块链技术等推动学校治理能力科学化:12月27日下午,合肥工业大学召开党委理论学习中心组(扩大)会议,专题学习研究区块链技术。校长梁樑表示,区块链技术是全球互联网技术发展的前沿阵地,作为转型发展关键期的发展中大国,要紧跟世界科技发展的最前沿,发挥区块链技术在国家治理体系和治理能力现代化、产业升级、金融服务领域的积极作用,实现经济社会高质量发展。要积极推动跨学科的区块链技术研究开发模式,着力攻克区块链的一批关键核心技术。相关学院和部门要主动思考、积极谋划设立新专业,成立学生创新社团,推出有针对性的区块链技术、人工智能、大数据等新一代信息技术相关的专业培训课程,孵化相关创新项目,培养具有新兴互联网思维的综合性人才。充分运用包括区块链技术等新兴技术力量,切实推动学校治理能力和管理机制的科学化、高效化和智能化。[2019/12/31]

首先,我们必须定义一个对象,该对象将作为Solidity编译器的信息输入。

Qtum创始人帅初:DDoS对区块链没有太大威胁:被问及量子链如何面对DDoS攻击时,量子链(Qtum)创始人帅初答道:DDoS对区块链系统,不会造[成太大的威胁。但是区块链可能遭受Sybil Attack女巫攻击和微尘攻击等,针对共识机制和智能合约,也有其他的攻击方式。[2018/2/26]

language:我们智能合约的编程语言,目前是使用Solidity,但你也可以选择其他编程语言。

sources:我们合同的内容。

settings:此选项告诉编译器我们想要生成哪些输出字段。对于此示例,我选择sources中的所有文件生成abi和evm.bytecode。这两条信息是部署阶段所必需的。

一旦我们有了编译器的配置对象,我们就可以执行它了。

第一行获取一个包含我们编译的脚本的对象。两个for循环允许我们在不同的JSON文件中存储单个.sol文件中的智能合约。

最后一步是把这三部分连接在一起

这样我们就完成了编译脚本。如果我们运行它,项目结构应该如下所示:

我们已经gitignoredbuild文件夹,因为没有意义在Git下跟踪它。

现在我们已经编辑了我们的智能合约,是时候将它们部署到区块链上了。

脚本部署

是时候将我们的智能合约部署到以太坊区块链上了。

首先,我们需要两件事来将智能合约部署到区块链:

解锁帐户:由于我们需要使用gas来发送将创建智能合约的交易。

连接到区块链的节点:我们正在向网络发送交易,因此我们需要连接到链上。

关于第一点,我们将使用HDWalletProvider,这个工具允许我们使用助记符十二个单词短语解锁帐户并连接到以太坊节点。但是......节点在哪里?好吧,我们可以做两件事,运行我们自己的以太坊节点或使用Infura。Infura是一项服务,它允许我们连接到以太坊网络,而无需运行我们自己的以太坊节点。所以,我们似乎已经涵盖了两点。

解锁帐户并连接到以太坊节点。

要使用Infura,我们需要在其页面中注册。它将生成我们需要使用其服务的API密钥。

我们将使用Web3JS与区块链进行交互。Web3需要提供程序来连接节点并与节点交互。这个提供程序是HDWalletProvider,我们来配置它和Web3。

HDWalletProvider的第一个参数是我们的12个单词助记词。这个短语允许提供者解锁帐户,第二个参数告诉提供者以太网节点在哪里,在这种情况下我们通过Infura连接。

最后我们在web3中设置了提供者。

通过正确配置web3,我们可以最终部署合同。

首先,我们需要我们编译的脚本。

然后,在第8行中,我们使用Web3API创建智能合约,并将智能合约的接口传递给它。接下来,我们需要创建一个包含智能合约信息的部署事务:

data:合同的字节代码。它以0x开头表示它是十六进制的。

arguments:我们的智能合约构造函数的参数。

创建事务后,我们将其发送到以太坊区块链,以便为节点处理它:

from:签署交易并发送的帐户。在第4行中,我们获得了HDWalletProvider生成和解锁的帐户以及12个单词短语。

gas:我们想要用于发送交易的最大gas量。

第18行的console.log对于获取部署合同的地址很重要,这样我们将来可以将其用于DAPP、用于其他合同等。

脚本的最后一行告诉提供程序结束与以太坊节点的连接。

如果我们执行脚本,一段时间后,我们将获得如下跟踪:

现在我们可以访问EtherScan并查看我们在区块链中部署的智能合约。

最后,我们已经部署了智能合约,并且每个人都可以访问。我希望这篇文章有所帮助。

标签:以太坊区块链SOLWEB以太坊官网公告区块链域名选什么后缀好sol币是什么币中文名WeBlock

MATIC热门资讯
OKB:OKB登Bitfinex “走出去”将成常态

文|凯尔编辑|文刀6月13日,Bitfinex正式上线OKEx全球通用积分OKB和美元稳定币USDK,并为这两个币种开通主流交易对。平台币、稳定币如同一座桥,将全球两大交易所联合在了一起.

1900/1/1 0:00:00
公信宝:通证回购:熊市助跌,牛市助涨

原创:数链评级团队一般情况,上市公司不得收购本公司股份。各国公司法都会对公司拥有本公司股份进行限制,原则上禁止.

1900/1/1 0:00:00
比特币:看市 | Facebook发币前夕 BTC突破9300美元 创下近一年新高

据火币全球站数据,6月16日,BTC一度突破9300USDT,创下近一年新高。同时,6月14日,比特币日活跃地址数量突破100万,这也是2019年以来该指标首次突破这一标准.

1900/1/1 0:00:00
BOOK:重磅丨Facebook已与Visa、MasterCard等公司签署加密货币项目合作协议

据《华尔街日报》报道,Facebook已经与十几家公司签署了其加密货币项目Libra合作协议,其中包括Visa、万事达、PayPal和Uber.

1900/1/1 0:00:00
WOR:首期FastTrack 投票上币第一轮结果公布

尊敬的用户:由火币全球站发起的首期FastTrack投票上币第一轮,已于新加坡时间6月13日21:00:00结束,本轮投票共计25,316,075(HT)票.

1900/1/1 0:00:00
CEB:突发:Facebook加密项目又与数十家新公司签约,总共将获得10亿美金支持

根据科技媒体TheBlock6月14日报道,Facebook加密项目libra又获得数十家新公司的支持.

1900/1/1 0:00:00