三、部署智能合约到conflux公链
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
三、部署智能合约到conflux公链
⼀、准备合约
本节课程教⼤家如何讲智能合约部署到conflux公链上,⾸先⼤家可以看到下⾯的这个智能合约是不是很简单。
我们将会以这个合约演⽰部署到conflux公链的过程。
pragma solidity ^0.5.0;
contract Counter {
uint public count=0;
event SelfEvent(address indexed sender, uint current);
constructor() public {
}
function inc(uint num) public returns (uint){
return count += num;
}
function self() public {
emit SelfEvent(msg.sender, count);
}
}
复制代码
⼆、conflux的sdk安装
我们使⽤js-conflux-sdk作为本教程的web教程,交互⾸先我们需要进⾏安装nodejs作为我们的运⾏环境。
飞机票⼀张吧,我们安装好nodejs 后,就可以来玩我们的sdk了。
废话不多说,直接开始撸。
我们使⽤WIN + R键打开命令⾏,然后创建⼀个⽂件夹(温馨提⽰切换到⾮系统盘玩切换⽅式“D:”就切换到D盘了)使⽤“mkdir my-project
&& cd my-project” 创建好项⽬后⾃动进⼊⽂件夹,然后我们运⾏“npm init” 进⾏初始化node项⽬,这⼀步会让你确认⼀些东西,如果你是⼩⽩⼀路回车(Enter键)就好。
如果你是前端⼤神,我也没啥好教的我也不太懂。
为了稳定我们使⽤固定版本号⽅式安装依赖,我们运⾏“npm install js-conflux-sdk@0.9.2” 命令进⾏安装js-conflux-sdk的0.9.2版本依赖(可以使⽤“npm uninstall package-name” 命令删除对应依赖)。
前置准备到这⾥基本已经完成。
三、编写调⽤合约js代码
下⾯请看我的⽬录结构跟随我⼀起来学习,下⾯的⽬录结构请不要直接看到了就创建,因为你不知道都是什么意思,看玩我的解释在回头创建。
⼩伙伴应该已经发现了 node_modules、package-lock.json、package.json 这些⽂件是我们在进⾏安装 sdk依赖时⾃动⽣成的。
其他⽂件⽬前都没有,我们来按顺序⽣成他们。
先创建sol这个⽂件夹,然后创建这三个⽂件。
test.sol就是上⾯我们的合约代码直接拷⼊⽂件中。
abi.json和code.json两个⽂件是通过这个⼯具在线⽣成的。
我来说下⽣成过程。
⾸先我们将⾥⾯的⽂件全部删除,然后点击这⾥找到我们的项⽬⽬录下的test.sol ⽂件
我们应该看到下⽅我框出来的两个按钮了吧,那两个按钮就是abi.json和code.json⽂件的来源。
abi.json我们可以直接复制过去,code.json ⽂件我们要改点东西。
⾸先我们看到的code⽂件应该是这样的
{
"linkReferences": {},
"object": "608060405260...c63430005110032",
"opcodes": "PUSH1 0x80 PUSH1 ... 1100 ORIGIN ",
"sourceMap": "27:337:0 ... 37;;;;;;"
}
复制代码
代码有省略,太长不好看,我们看到object这个key值了吧,我们把它的值考出来然后在头部加0x 就好了放在code.json⽂件中。
code.js⽂件中只存放object的内容前⾯加0x,也就是下⾯的代码,其他信息都不要,千万记住了。
这点很重要
"0x608060405260 (63430005110032)
复制代码
就是这样的。
然后我们在写另外两个call和deploy两个⽂件
先写deploy⽂件
// 私钥地址
const PRIVATE_KEY = '0x20f9169d40801955faada641cdb029f8e42c581c0c991a62753c736a0a168e5e';
// 合约地址
const CONTRACT = '';
const { Conflux } = require('js-conflux-sdk');
async function main() {
const cfx = new Conflux({
url: ':12537',
defaultGasPrice: 100,
defaultGas: 1000000,
});
const account = cfx.Account(PRIVATE_KEY); // create account instance
console.log(account.address);
// create contract instance
const contract = cfx.Contract({
abi: require('./sol/RC20.abi.json'),
bytecode: require('./sol/RC20.code.json'),
});
const receipt = await contract.constructor()
.sendTransaction({ from: account })
.confirmed();
console.log(receipt.contractCreated);
}
main().catch(e => console.error(e));
复制代码
打开项⽬cmd窗⼝在上⾯的⽬录下运⾏命令 “node deploy.js”就将合约部署上去了
receipt.contractCreated 这个会打印出合约地址。
作者:悠悠_158********
链接:https://juejin.im/post/5ef563f75188252e99702335
来源:掘⾦
著作权归作者所有。
商业转载请联系作者获得授权,⾮商业转载请注明出处。