超級實(shí)用的干貨 . 《 部署智能合約到conflux公鏈 》

2021-9-8    前端達(dá)人

找到了一位大佬的文章,受到了許多啟發(fā)


一、準(zhǔn)備合約

本節(jié)課程教大家如何講智能合約部署到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);
    }
} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

二、conflux的sdk安裝

我們使用js-conflux-sdk作為本教程的web教程,交互首先我們需要進(jìn)行安裝nodejs作為我們的運(yùn)行環(huán)境。飛機(jī)票一張收下吧,我們安裝好nodejs后,就可以來玩我們的sdk了。廢話不多說,直接開始擼。

我們使用WIN + R鍵打開命令行,然后創(chuàng)建一個文件夾(溫馨提示切換到非系統(tǒng)盤玩切換方式“D:”就切換到D盤了)使用“mkdir my-project && cd my-project” 創(chuàng)建好項目后自動進(jìn)入文件夾,然后我們運(yùn)行“npm init” 進(jìn)行初始化node項目,這一步會讓你確認(rèn)一些東西,如果你是小白一路回車(Enter鍵)就好。如果你是前端大神,我也沒啥好教的我也不太懂。為了穩(wěn)定我們使用固定版本號方式安裝依賴,我們運(yùn)行 “npm install js-conflux-sdk@0.9.2” 命令進(jìn)行安裝js-conflux-sdk的0.9.2版本依賴(可以使用“npm uninstall package-name” 命令刪除對應(yīng)依賴)。前置準(zhǔn)備到這里基本已經(jīng)完成。

三、編寫調(diào)用合約js代碼

下面請看我的目錄結(jié)構(gòu)跟隨我一起來學(xué)習(xí),下面的目錄結(jié)構(gòu)請不要直接看到了就創(chuàng)建,因?yàn)槟悴恢蓝际鞘裁匆馑迹赐嫖业慕忉屧诨仡^創(chuàng)建。

image

小伙伴應(yīng)該已經(jīng)發(fā)現(xiàn)了 node_modules、package-lock.json、package.json 這些文件是我們在進(jìn)行安裝 sdk依賴時自動生成的。其他文件目前都沒有,我們來按順序生成他們。

先創(chuàng)建sol這個文件夾,然后創(chuàng)建這三個文件。test.sol就是上面我們的合約代碼直接拷入文件中。abi.json和code.json兩個文件是通過這個工具 remix 在線生成的。我來說下生成過程。
首先我們將里面的文件全部刪除,然后點(diǎn)擊這里找到我們的項目目錄下的test.sol 文件

我們應(yīng)該看到下方我框出來的兩個按鈕了吧,那兩個按鈕就是abi.json和code.json文件的來源。abi.json我們可以直接復(fù)制過去,code.json文件我們要改點(diǎn)東西。

首先我們看到的code文件應(yīng)該是這樣的

{
    "linkReferences": {},
    "object": "608060405260...c63430005110032",
    "opcodes": "PUSH1 0x80 PUSH1 ... 1100 ORIGIN ",
    "sourceMap": "27:337:0 ... 37;;;;;;"
} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

代碼有省略,太長不好看,我們看到object這個key值了吧,我們把它的值考出來然后在頭部加0x 就好了放在code.json文件中。code.js文件中只存放object的內(nèi)容前面加0x,也就是下面的代碼,其他信息都不要,千萬記住了。這點(diǎn)很重要?。。。?

"0x608060405260...c63430005110032" 
  • 1

就是這樣的。然后我們在寫另外兩個call和deploy兩個文件

先寫deploy文件

 // 私鑰地址
const PRIVATE_KEY = '0x20f9169d40801955faada641cdb029f8e42c581c0c991a62753c736a0a168e5e';
// 合約地址
const CONTRACT = '';
const { Conflux } = require('js-conflux-sdk');

async function main() {
  const cfx = new Conflux({
    url: 'http://mainnet-jsonrpc.conflux-chain.org: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)); 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

打開項目cmd窗口在上面的目錄下 運(yùn)行命令 “node deploy.js”就將合約部署上去了

receipt.contractCreated 這個會打印出合約地址。




分享此文一切功德,皆悉回向給文章原作者及眾讀者.
免責(zé)聲明:藍(lán)藍(lán)設(shè)計尊重原作者,文章的版權(quán)歸原作者。如涉及版權(quán)問題,請及時與我們?nèi)〉寐?lián)系,我們立即更正或刪除。
來源:csdn
作者:
原文鏈接:https://blog.csdn.net/pizhi1461/article/details/106967255

藍(lán)藍(lán)設(shè)計www.bouu.cn )是一家專注而深入的界面設(shè)計公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計、BS界面設(shè)計 、 cs界面設(shè)計 、 ipad界面設(shè)計 、 包裝設(shè)計 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計、 網(wǎng)站建設(shè) 平面設(shè)計服務(wù)

分享本文至:

日歷

鏈接

個人資料

存檔