以太坊智能合约的发展在2018年呈指数级增长,2019年似乎将遵循这一趋势。有些框架,如Truffle,可以帮助我们快速构建和维护智能合约,如果您想让亲自动手体验的话,我将解释如何编译您的智能合约,并使用自己的脚本将其部署到以太坊网络。
注意:我将使用简单的智能合约,因为本文的目的只是展示如何编译和部署脚本。
项目具有以下结构:
文件夹合同包含我们的智能合约。对于这篇文章,我们将使用两个简单的智能合约:
MyContractA.sol
MyContractA.sol
如您所见,我们有两个文件,其中一个包含两个智能合约,证明我们可以拥有任意数量的智能合约。
脚本编译
现在,一旦我们有了初始项目结构和智能合约,就可以开始构建编译脚本了。
韩国IT巨头Kakao在新加坡成立区块链分支机构以推进海外扩张:韩国IT巨头Kakao Group在新加坡成立两家区块链分支机构:非营利性的Klaytn基金会和全球加速器部门Krust,以推进其诞生于新加坡的公链项目Klaytn的全球化。为此,Kakao集团计划向相关初创公司和开发人员投资3亿美元。声明中写道:「我们将更积极、更系统地扩展Klaytn世界,积极向区块链开发人员和企业投入人力和财力,以加速生态系统的成长和技术的发展。」Kakao还创建了「Klaytn改进储备金」,以支持维护区块链生态系统所需的基础设施和服务。(Korea Herald)[2021/8/16 22:16:55]
该脚本的目的是为每个合约生成一个JSON,每个JSON都包含已编译的合同信息。这些JSON将存储在名为build/的输出路径中
南宁市发布基于区块链技术的“社保快贷”个人版金融服务:11月25日,南宁市人社局联合金融机构正式发布基于区块链技术的“社保快贷”个人版金融服务。据了解,南宁市于今年1月在全国率先搭建“区块链+人社”应用平台并推出多项应用,其中“区块链+人社信用授权”引人关注。基于区块链技术的“社保快贷”个人版金融服务的推出,意味着参加了南宁市职工基本养老保险的市民,如果想要申请“社保快贷”的话,只需在南宁智慧人社APP“一键授信”,银行依托“区块链+人社”应用平台,对贷款申请人依法“一键授信”的人社信息进行信用评估、确定贷款额度,全流程线上、无纸化申办、迅速放款,最高可贷20万,利率低至4.8%。(新浪广西)[2020/11/26 22:10:20]
构建脚本的步骤如下:
创建构建/目录。
获取我们的合同来源。
声音 | 中国通信工业协会高斌:赋能实体经济的区块链产业才有未来:据山西日报12月6日消息,在近日举行的长治市区块链产业生态建设研讨会上,中国通信工业协会区块链专业委员会副主任高斌表示,链改就是希望区块链产业化,产业区块链化赋能实体经济。链改是基于价值链,运用区块链技术与思想,融合人工智能、大数据、云计算、数字经济等新一代技术与思想,赋能实体经济,提高效率降低成本,加速产业发展,培育新动能的过程。区块链赋能实体经济,要发挥优势产业资源+区块链赋能才能是产业升级。政府要有选择的提供一些非核心的场景给企业,有了政府提供政策与场景,区块链服务企业就有了区块链产业化的基础。赋能实体经济的区块链产业才有未来,通过共享方式享受区块链产业化红利。[2019/12/6]
编译合同并将输出写入文件。
第1步-创建build/文件夹。
薛蛮子“怼”徐小平:区块链投资上,我没他那么亢奋,数字货币投资是带泡沫的啤酒,不尝泡泡喝不上啤酒但是泡泡占了百分之九十:在真格基金徐小平关于“区块链革命”的一番论述引爆币圈链圈之时,作为传统投资界最早关注区块链的薛蛮子 却有点不同的看法,他直言“太亢奋了”。对当前区块链的火爆市场,已经投资20家区块链公司的薛蛮子认为区块链的意义,会如同当年互联网兴起一样面临无数的置疑,相应的也会有泡沫与炒作。区块链及数字货币投资是带泡沫的啤酒,不尝泡泡喝不上啤酒,但是泡泡占了百分之九十。真正的啤酒少之又少,现在的项目绝大部份是空气币。同时薛蛮子也表示:期待国家监管部门通过沙盒、牌照、立法、交易所引导等举措,帮助中小投资者过滤掉垃圾项目,以稳定行情,从金融市场层面,帮助区块链技术的良性发展。[2018/1/11]
这一步是最简单的,因为我们只需要了解JavaScript的一些基础知识。
现在要将所有文件的来源都放到智能合约文件夹中。在这一步中,只需要JavaScript就不需要以太坊概念,但还是有点复杂。
对于contracts文件夹中的每个文件,我们在sources对象中添加一个新字段,其中键是文件名,值是.sol文件的内容。
第3步-编译并写入输出
现在我们已经有了输出文件夹和智能合约的内容,是时候编译它们了。
首先,我们必须定义一个对象,该对象将作为Solidity编译器的信息输入。
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并查看我们在区块链中部署的智能合约。
最后,我们已经部署了智能合约,并且每个人都可以访问。我希望这篇文章有所帮助。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。