主页 > imtoken钱包苹果手机怎么下载 > 区块链研究实验室使用 JavaScript 编译和部署以太坊智能合约

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

国外以太坊币交易网站_以太坊一次能交易多少_以太坊中国可以交易吗

广告防火检测实验室

X

以太坊智能合约的发展在 2018 年呈指数增长,2019 年似乎将遵循这一趋势。 一些框架,比如 Truffle,可以帮助我们快速构建和维护智能合约。 如果你想自己体验一下,我将解释如何使用你自己的脚本(Rinkeby、Ropsten 或 Mainnet)编译你的智能合约并将它们部署到以太坊网络。

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

该项目具有以下结构:

以太坊一次能交易多少_以太坊中国可以交易吗_国外以太坊币交易网站

国外以太坊币交易网站_以太坊中国可以交易吗_以太坊一次能交易多少

以太坊一次能交易多少_国外以太坊币交易网站_以太坊中国可以交易吗

脚本编译

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

这个脚本的目的是为每个合约生成一个JSON(在本例中,我们将使用三个JSON来完成编译过程),每个JSON包含编译后的合约信息。这些JSON将存储在名为build/的输出路径中

构建脚本的步骤如下:

以太坊一次能交易多少_国外以太坊币交易网站_以太坊中国可以交易吗

创建构建/目录。

获取我们的合同来源。

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

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

这一步是最简单的,因为我们只需要了解一些 JavaScript 的基础知识(这里不需要以太坊概念)。

以太坊一次能交易多少_以太坊中国可以交易吗_国外以太坊币交易网站

广告饮用水检测实验室-饮用水检测实验室机构>出具资质报告-详情咨询

X

现在是时候将所有文件放入智能合约文件夹中了。 这一步只需要JavaScript,不需要以太坊概念,但还是有点复杂。

国外以太坊币交易网站_以太坊一次能交易多少_以太坊中国可以交易吗

对于 contracts 文件夹中的每个文件,我们向 sources 对象添加一个新字段(我们将在第 3 步中看到此 sources 的用途),其中键是文件名,值是 .sol 文件的内容。

第 3 步 - 编译并写入输出

以太坊一次能交易多少_国外以太坊币交易网站_以太坊中国可以交易吗

现在我们有了输出文件夹和智能合约的内容,是时候编译它们了(是的!以太坊部分在最后)。

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

国外以太坊币交易网站_以太坊中国可以交易吗_以太坊一次能交易多少

广告实验室家具与普通家具有什么区别?

X

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

来源:我们合同的内容。

设置:此选项告诉编译器我们要生成哪些输出字段。 对于这个例子,我选择源中的所有文件来生成 abi 和 evm.bytecode。 部署阶段需要这两条信息。

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

以太坊中国可以交易吗_国外以太坊币交易网站_以太坊一次能交易多少

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

最后一步是将三个部分连接在一起

以太坊中国可以交易吗_以太坊一次能交易多少_国外以太坊币交易网站

以太坊一次能交易多少_国外以太坊币交易网站_以太坊中国可以交易吗

广告实验室实验室实验室,室内实验台让孩子养成好习惯!

X

以太坊一次能交易多少_以太坊中国可以交易吗_国外以太坊币交易网站

我们已经 git 忽略了构建文件夹,因为在 Git 下跟踪它没有意义。

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

脚本部署

是时候将我们的智能合约部署到以太坊区块链了(在本例中,部署将针对 Rinkeby,因此不会使用主链,但过程与其他以太坊区块链类似)。

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

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

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

关于第一点,我们将使用 HDWalletProvider,这是一个工具(感谢 Truffle :)),它允许我们使用助记十二字短语来解锁帐户并连接到以太坊节点。 但是……节点在哪里? 好吧,我们可以做两件事,运行我们自己的以太坊节点(这是我不推荐的,至少对于业余开发 dApp 而言)或使用 Infura。 Infura 是一项服务,允许我们在不运行自己的以太坊节点的情况下连接到以太坊网络。 所以,我们似乎已经涵盖了两点。

以太坊中国可以交易吗_国外以太坊币交易网站_以太坊一次能交易多少

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

要使用 Infura,我们需要在它的页面上注册。 它将生成我们使用其服务所需的 API 密钥(完全免费)。

我们将使用 Web3JS 与区块链进行交互。 Web3 要求提供者连接到节点并与之交互。 这个provider就是HDWalletProvider,我们来配置它和Web3。

国外以太坊币交易网站_以太坊一次能交易多少_以太坊中国可以交易吗

广告做好这几点,基础再差也能考研成功

X

HDWalletProvider 的第一个参数是我们的 12 字助记符。 这个短语允许提供者解锁账户(它默认解锁多个账户,但此时我们只需要第一个),第二个参数告诉提供者以太节点在哪里,在这种情况下我们通过 Infura 连接(如果你使用您自己的节点以太坊中国可以交易吗,它应该类似于 ws://localhost:4535 或您的节点所在的任何位置)。

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

正确配置 web3 后,我们终于可以部署合约了。

以太坊中国可以交易吗_国外以太坊币交易网站_以太坊一次能交易多少

首先需要我们编译好的脚本(我们只需要部署一个脚本,其他的流程是一样的,或者你也可以构建一些逻辑来一个一个编译部署)。

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

以太坊一次能交易多少_以太坊中国可以交易吗_国外以太坊币交易网站

数据:合约的字节码。 它以 0x 开头,表示它是十六进制的。

arguments:我们的智能合约构造函数的参数(如果构造函数没有参数则不需要)。

创建交易后,我们将其发送到以太坊区块链以供节点处理:

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

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

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

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

如果我们执行脚本,一段时间后,我们会得到这样的跟踪:

国外以太坊币交易网站_以太坊一次能交易多少_以太坊中国可以交易吗

广告走在科技前沿,北上神靠谱的人工智能培训来了,一起来看看吧~

X

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

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