iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 6
0
Blockchain

以太坊-探索智能合約的多種面向系列 第 6

Day 6 搭建私有鏈(二) - 開啟區塊鏈,創建帳戶

(5)寫入區塊
將配置好的genesis.json初始化 :
geth --datadir “./testnet” init genesis.json
初始化之後,會在testnet的資料夾中,創建兩個資料夾,
“keystore(存放帳戶資訊)”和”geth(存放區塊資訊”。
說明 :
datadir 指定存放區塊鏈數據的資料夾。
geth init 初始化的命令,帶有一個參數(json檔案)。
區塊初始化:

INFO [10-21|19:34:14.130] Maximum peer count                       ETH=25 LES=0 total=25
INFO [10-21|19:34:14.131] Allocated cache and file handles         database=/home/name/Iron/iron/geth/chaindata cache=16 handles=16
INFO [10-21|19:34:14.241] Writing custom genesis block
INFO [10-21|19:34:14.241] Persisted trie from memory database      nodes=1 size=150.00B time=61.072µs gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [10-21|19:34:14.241] Successfully wrote genesis state         database=chaindata                          hash=68eb29…695376
INFO [10-21|19:34:14.241] Allocated cache and file handles         database=/home/name/Iron/iron/geth/lightchaindata cache=16 handles=16
INFO [10-21|19:34:14.341] Writing custom genesis block
INFO [10-21|19:34:14.341] Persisted trie from memory database      nodes=1 size=150.00B time=67.934µs gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [10-21|19:34:14.342] Successfully wrote genesis state         database=lightchaindata                          hash=68eb29…695376

(6)開啟區塊鏈
輸入:
geth --datadir “./testnet” --rpc --rpcaddr --rpcport --rpcapi “eth,web3,net,personal,admin,txpool,miner” --nodiscover --networkid 20
--port –minerthreads 1 console
說明:
datadir : 指定存放區塊鏈數據的資料夾。
rpc : 開啟HTTP-RPC,進行智能合約的佈署和呼叫。
rpcaddr : HTTP-RPC的監聽地址,default為localhost。
rpcport : HTTP-RPC的監聽接口,default為8545。
rpcapi : 可連接的客戶端應用。
nodiscover : 關閉自動同步其他節點。
networkid : 指定以太坊網路。
port : 以太坊網路的監聽接口,default為30303。
minerthreads : 挖礦時,CPU占用的執行序數量,default為4。
console : 開啟JavaScript控制台。
開啟區塊鏈:

INFO [10-21|20:08:17.257] Maximum peer count                       ETH=25 LES=0 total=25
INFO [10-21|20:08:17.258] Starting peer-to-peer node               instance=Geth/v1.8.18-unstable-88b41a9e/linux-amd64/go1.10.4
INFO [10-21|20:08:17.258] Allocated cache and file handles         database=/home/name/Iron/iron/geth/chaindata cache=768 handles=512
INFO [10-21|20:08:17.409] Initialised chain configuration          config="{ChainID: 20 Homestead: 0 DAO: <nil> DAOSupport: false EIP150: <nil> EIP155: 0 EIP158: 0 Byzantium: <nil> Constantinople: <nil> Engine: unknown}"
INFO [10-21|20:08:17.409] Disk storage enabled for ethash caches   dir=/home/name/Iron/iron/geth/ethash count=3
INFO [10-21|20:08:17.409] Disk storage enabled for ethash DAGs     dir=/home/name/.ethash               count=2
INFO [10-21|20:08:17.409] Initialising Ethereum protocol           versions="[63 62]" network=20
INFO [10-21|20:08:17.410] Loaded most recent local header          number=0 hash=68eb29…695376 td=1 age=49y6mo5d
INFO [10-21|20:08:17.410] Loaded most recent local full block      number=0 hash=68eb29…695376 td=1 age=49y6mo5d
INFO [10-21|20:08:17.410] Loaded most recent local fast block      number=0 hash=68eb29…695376 td=1 age=49y6mo5d
INFO [10-21|20:08:17.410] Loaded local transaction journal         transactions=0 dropped=0
INFO [10-21|20:08:17.410] Regenerated local transaction journal    transactions=0 accounts=0
INFO [10-21|20:08:17.571] IPC endpoint opened                      url=/home/name/Iron/iron/geth.ipc
INFO [10-21|20:08:17.571] New local node record                    seq=13 id=10bab1be60605979 ip=127.0.0.1 udp=0 tcp=30304
INFO [10-21|20:08:17.571] Started P2P networking                   self="enode://0e3e52878db32d5089959185160d6aad101c72de38cdb025234b1d7b22a84ba21d116627d7e1bc7001be29cd98b463dc71d0b858966a8e5ca7c35fea5f167535@127.0.0.1:30304?discport=0"
INFO [10-21|20:08:17.572] HTTP endpoint opened                     url=http://0.0.0.0:8545          cors=* vhosts=localhost
Welcome to the Geth JavaScript console!

instance: Geth/v1.8.18-unstable-88b41a9e/linux-amd64/go1.10.4
 modules: admin:1.0 debug:1.0 eth:1.0 ethash:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0
>

(7)創建帳戶
指令:
輸入personal,可以看到可以呼叫的函數列表 :

> personal
{
  listAccounts: [],
  listWallets: [],
  deriveAccount: function(),
  ecRecover: function(),
  getListAccounts: function(callback),
  getListWallets: function(callback),
  importRawKey: function(),
  lockAccount: function(),
  newAccount: function github.com/ethereum/go-ethereum/console.(*bridge).NewAccount-fm(),
  openWallet: function github.com/ethereum/go-ethereum/console.(*bridge).OpenWallet-fm(),
  sendTransaction: function(),
  sign: function github.com/ethereum/go-ethereum/console.(*bridge).Sign-fm(),
  signTransaction: function(),
  unlockAccount: function github.com/ethereum/go-ethereum/console.(*bridge).UnlockAccount-
  fm()
}

接著輸入 :

personal.newAccount(“123456”)  <= 此欄位為帳戶密碼。
"0x4ca5f4a1612ebe48d8e48c7df7b2f0d2839ebc56"

返回帳戶地址,創建成功,在keystore資料夾中會出現一個帳戶地址名稱的帳戶檔案。


上一篇
Day 5 搭建私有鏈(一)
下一篇
Day 7 搭建私有鏈(二) - 交易,轉帳,查詢
系列文
以太坊-探索智能合約的多種面向20

尚未有邦友留言

立即登入留言