在主網上發幣
部署合約有多種方式
- geth 編譯代碼 —部署合約
- 用ethereum wallet錢包部署合約
- 最簡單直觀的部署合約方式: MetaMask和Remix Solidity (以下采用這種方法)
- MetaMask 選主網 | 測試網Ropsten
- Remix Solidity 選Injected Web3
- Remix Solidity 中編寫代幣合約 並編譯
- 部署 (初始發行1000000000個, 精度18, tokenName:CCB, tokenSymbol:CCB, owner:當前部署的賬戶)
- create後,在錢包中添加token
- 發佈了代幣以後,可以到官方瀏覽器上將源碼公開
- 發行之後可通過mintToken創造一些代幣
- 主網 到 https://etherscan.io/ 右上角搜索create時的txHash
進行verify AND publish - 測試網 到 https://ropsten.etherscan.io/ 右上角搜索create時的txHash
進行verify AND publish
在私鏈上發幣
使用MetaMask
MetaMask 連私鏈時注意填寫自定義的RPC節點時,同時也填上對應節點的ChainID
注意chainID
- 如果報"Invalid sender"錯誤,注意啓動geth的參數中networkid的配置要與創世塊中的chainID一致
- chainID使用15可以成功
- 創世塊中需要加eip155Block相關,MetaMask 是得支持eip155的
https://github.com/ethereum/EIPs/blob/master/EIPS/eip-155.md
不同的共有鏈定義不同的chainId, 防止同一筆交易在不同的共有鏈上進行兩次交易,防止重放攻擊
v = 35 + chainId *2 | v = 36 + chainId * 2
不同的chainId會得到不同的v,還原出來的公鑰也會不同
因爲只通過r,s恢復公鑰有兩種可能,所以每個chainId也該擁有兩個不同的v,代表兩個不同的地址
創建塊中這樣配
"config": {
"chainID" : 15,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
啓動參數這樣配
--networkid 15
順便一提,主網的chainID 是1; 私鏈的gasPrice默認是18000000000(18GWei)
本地Remix 直接連私鏈
命令行中鍵入remix-ide
創建合約與 轉Token都沒問題