<address id="ttjl9"></address>

      <noframes id="ttjl9"><address id="ttjl9"><nobr id="ttjl9"></nobr></address>
      <form id="ttjl9"></form>
        <em id="ttjl9"><span id="ttjl9"></span></em>
        <address id="ttjl9"></address>

          <noframes id="ttjl9"><form id="ttjl9"></form>

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

          2021-9-8    前端達人

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


          一、準備合約

          本節課程教大家如何講智能合約部署到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教程,交互首先我們需要進行安裝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代碼

          下面請看我的目錄結構跟隨我一起來學習,下面的目錄結構請不要直接看到了就創建,因為你不知道都是什么意思,看玩我的解釋在回頭創建。

          image

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

          先創建sol這個文件夾,然后創建這三個文件。test.sol就是上面我們的合約代碼直接拷入文件中。abi.json和code.json兩個文件是通過這個工具 remix 在線生成的。我來說下生成過程。
          首先我們將里面的文件全部刪除,然后點擊這里找到我們的項目目錄下的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;;;;;;"
          } 
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6

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

          "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窗口在上面的目錄下 運行命令 “node deploy.js”就將合約部署上去了

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




          分享此文一切功德,皆悉回向給文章原作者及眾讀者.
          免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們取得聯系,我們立即更正或刪除。
          來源:csdn
          作者:
          原文鏈接:https://blog.csdn.net/pizhi1461/article/details/106967255

          藍藍設計www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務

          日歷

          鏈接

          個人資料

          藍藍設計的小編 http://www.syprn.cn

          存檔

          亚洲va欧美va天堂v国产综合