ETH geth使用&發行ERC20代幣 草稿

###本文目前是草稿


本文寫作的機緣是參加區塊鏈Hackthon的一個會前賽(應該算會前賽吧XD)

紀錄我建立ERC20代幣的流程

這兩天讀了大量資料,但資料都滿散的

萬一之後忘記,要再重找資料可就很浪費時間了


開發環境:

以太節點:Ubuntu(我的桌電,放在學校)
客戶端:MacOS(筆電)& Windows (家裡的桌電)

以下正文開始

PART 1 : 建立節點

  1. 安裝geth
    sudo add-apt-repository -y ppa:ethereum/ethereum
    sudo apt-get update
    sudo apt-get install ethereum
     
  2. 在terminal輸入geth看有沒有安裝成功(之後補圖)
    有則打exit退出
     
  3. 在Rinkeby測試網上啟動一個節點
    geth --rinkeby console --rpc --rpcaddr 0.0.0.0 --ws --wsaddr 0.0.0.0

    --rpcaddr 0.0.0.0
    是可以用該台電腦ip從外部直接連入,預設port是8545
    限定本地端你也可以用
    --rpcaddr 127.0.0.1 

    掛著他會自己同步區塊資料,就給他掛著吧
     
  4. 用curl測試Json-RPC API有沒有正確運作
    可以在這裡找到API說明
    https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_gettransactionbyhash

    我先設一個alias,和一個環境變數lc 方便測試
    alias gg=
    "curl -X POST -H \"Content-Type: application/json\" --data"
    export lc=140.114.78.42:8545

    Terminal input:
    gg '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":67}' $lc
    return:
    {"jsonrpc":"2.0","id":67,"result":"Geth/v1.8.4-stable-2423ae01/linux-amd64/go1.10"}

    這個指令會回傳節點的軟體版本,如上述return藍字處
     
  5. 接下來創一個錢包,用來領Rinkeby的測試幣
    (之後補圖和詳細流程)

PART 2 : 領測試幣,測試Json API


  1. 這裡領測試幣
    (之後補圖)
     
  2. 你需要在fb上po文,內容是你剛剛創的錢包地址,對象設公開
    然後把po文網址貼到該網頁中
    然後選擇你要領多少,應該領三顆就很夠了(cd 8小時)
     
  3. 等待幾分鐘後去etherscan確定我們剛剛從水龍頭領的錢有沒有進來
    這是我帳戶的交易頁面https://rinkeby.etherscan.io/address/0x631483d982e724adfdead48e3a1b9475a58ea5b2
    你的網址大概像
    https://rinkeby.etherscan.io/address/{錢包地址}
     
  4. 現在我們要測試我們剛剛用geth的本地節點有沒有同步到那筆水龍頭發出的交易
    點進去那筆交易,把etherscan裡面該筆交易的tx_hash複製下來

    比如說我要查該筆交易,就用這個指令(params中改成你的交易的tx_hash)
    gg '{"jsonrpc":"2.0","method":"eth_getTransactionByHash","params":["0x2d1fedb301caeae3e009d2f76023613459ab10650f09059fde929d87ce7b1f80"],"id":1}' $lc
    return:
    {"jsonrpc":"2.0","id":1,"result":{"blockHash":"0x40318f5f1f7f20f0aba6f60609d744747b525d4a81b04bc82b33d373c5c376f5","blockNumber":"0x20c6fd","from":"0x31b98d14007bdee637298086988a0bbd31184523","gas":"0x5208","gasPrice":"0x3b9aca00","hash":"0x2d1fedb301caeae3e009d2f76023613459ab10650f09059fde929d87ce7b1f80","input":"0x","nonce":"0x170d8","to":"0x631483d982e724adfdead48e3a1b9475a58ea5b2","transactionIndex":"0x2","value":"0x29a2241af62c0000","v":"0x2b","r":"0x8289dc35ea2b612e397a33af1a303e6bc0acd2aaff007d0ca31ce993accef375","s":"0x26121c36497a89ad944cfef949531be952dcec2bfcbe20787adaeefb8de0bc39"}}

    # 裡面value的部分是交易金額,是十六進位表示法,單位是wei
    # 0x29a2241af62c0000 = 3.0000000000 ether (剛剛領的測試幣)
  5. 查帳戶餘額
    gg '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0x631483d982E724ADfDead48E3a1b9475A58EA5B2", "latest"],"id":4}' $lc
    return:
    {"jsonrpc":"2.0","id":4,"result":"0x29a2241af62c0000"}
    #由於還沒有做任何交易,餘額就還是3.000 ether
     
做到這邊你可能會覺得curl + raw json看得眼花撩亂, 但不可否認json是最通用的API,多練習幾次有助於了解並構思如何實作你自己的專案

接下來我們改用python-web3的api來做剩下的部分

(我個人是比較會寫python,你也可以用web3.js來做,操作方法類似)

PART 3 : 安裝python web3 API,以及solidity編譯器

  1. 安裝solidity編譯器solc
    sudo add-apt-repository -y ppa:ethereum/ethereum
    sudo apt-get update
    sudo apt-get install solc

  2. 安裝py-solc
    pip install py-solc

  3. 安裝web3
    pip install web3

  4. 測試web3
    (細流待補,內容跟Curl+Json有87%像)
 

PART 4 : 用python web3 API,發布智能合約

發布合約可以參考web3.py的首頁的example
https://github.com/ethereum/web3.py
大概流程是
  1. 寫合約
  2. 用solc編譯得byte-code和abi
  3. 將byte-code和abi用web3.py上傳到測試網路中

(目前製作中)



 

 

Comments

Popular posts from this blog

用Linux挖以太(2)-RX580刷BIOS省電超頻 30-31MH/s @ 96W TDP

Tensorflow GPU x Windows 10 個人開發環境+多人遠端工作站 架設指南

PyTorch x Windows x GPU 安裝說明