月亮链 月亮链
Ctrl+D收藏月亮链

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

作者:

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

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

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

项目具有以下结构:

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

MyContractA.sol

MyContractA.sol

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

脚本编译

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

动态 | R3区块链平台Corda推出4.2企业版本:据CryptoNinjas今日消息,R3旗下区块链平台Corda已推出Corda推出4.2企业版本。新版本增加了将其他密钥类型存储至参与节点中的功能。[2019/10/1]

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

构建脚本的步骤如下:

创建构建/目录。

获取我们的合同来源。

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

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

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

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

声音 | 禅城区政协委员:政府可以在行政审批、民生服务等领域运用区块链:据信息时报报道,3月28日,佛山市禅城区第四届人民代表大会第四次会议开幕,禅城区政协委员李海青的提案围绕深化“数字政府”建设,优化政务信息系统展开。李海青提出,在大数据时代,政府可以运用大数据、区块链技术到行政审批、民生服务等领域,把禅城建设成为服务水平更强、运营成本更低的营商环境高地。[2019/3/29]

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

第3步-编译并写入输出

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

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

人物 | 苹果联合创始人成为区块链风投基金联合创始人:据cointelegraph援引Verdict周一的报道,苹果联合创始人Steve Wozniak宣布成为最近推出的专注于区块链技术的风险投资基金EQUI Global的联合创始人。据报道,其EquiTokens基础设施基于以太坊区块链。EQUI Global将面向那些通过在EquiToken上投资,专注于风险投资基金的“复杂”投资者。EQUI Global 80%的投资将投入科技公司,其余将投资于房地产和艺术等其他领域。[2018/10/16]

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

sources:我们合同的内容。

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

Node capital创始合伙人杜均:近两年区块链项目数量及投资金额爆发:今日,在链界科技大会上,Node capital创始合伙人杜均表示近年来区块链项目数量及投资金额爆发:自2012年以来,投资数量、投资金额增速均超过100%,其中2016年超过300%,2016年区块链项目约27000,2017年项目约60000,2017年区块链投资总额超过400亿元,2017年区块链专项基金124,截止到2018年5月,全球新成立区块链专项基金超过500,2017区块链投资中,支付项目占23.35, 底层系统占22%,金融占12.7%,中国占4.6%,占全球第三, 美国(36%) 英国(14.3%)。[2018/6/23]

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

第一行获取一个包含我们编译的脚本的对象。两个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以太坊最新价格美元计价区块链币币交易Solalgoweb3域名.tid

比特币行情热门资讯
比特币:比特大陆起诉前员工 向币印创始人索要3000万赔偿_BTC

据Coindesk报道,比特大陆正在起诉三名前员工涉嫌违反竞业协议,这三名员工分别是潘志彪、朱砝、李天昭,并要求其支付高达3000万元的赔偿.

1900/1/1 0:00:00
比特币:矿池江湖暗流涌动 神鱼怒揭矿圈“扣块攻击”_pps币的市场前景如何

这两天,格力与奥克斯空调正面硬刚的新闻抢占了各大媒体头条。格力实名举报奥克斯生产的8个型号空调虚假宣传,能效不合格。奥克斯称对方恶意造谣,不正当竞争.

1900/1/1 0:00:00
USDT:LBank期权交易大赛活动排名每日公示6.15_USD

尊敬的LBank用户:在LBank于?2019.5.2016:00-2019.6.1916:00期间举办的期权交易大赛.

1900/1/1 0:00:00
区块链:都知道区块链,但它真正的应用场景你知道吗?_LTHN价格

当前大家都知道区块链,但是很多人对区块链存在的价值却不知道,更不用提区块链到适用的场景是什么。其实区块链的技术已经在诸多领域展现了应用前景,许多机构和组织都对区块链技术产生了浓厚的兴趣,正在为区.

1900/1/1 0:00:00
BTC:6.15早间行情:BTC来势汹汹 能否再创新高?_SMAC

之前我们认为市场不会那么快进行方向性选择,但是市场永远是对的,现在BTC既然突破了8300美元的压力关口,就既有可能去创反弹的新高.

1900/1/1 0:00:00
AIN:在美国爆火的闪电网络,真能让比特币快如闪电吗?_Pitquidity Capital

闪电网络近来节点数量明显增加,随着“闪电火炬”活动的开展,在美国的受欢迎程度不可小觑。Twitter的首席执行官JackDorsey曾公开表示,正在尝试在推特上使用闪电网络进行比特币打赏.

1900/1/1 0:00:00