天天看點

我連敲3年代碼, 工資卻不如剛入職的TA!

以太坊讓世人第一次知道了智能合約的概念,為了支援智能合約,以太坊必須把自己變的特别像一台計算機,那麼全球的節點連接配接到一起,怎麼能像一個計算機呢?那就是使用 EVM(以太坊虛拟機)技術,讓每個節點的連結清單上可以運作智能合約的指令。全球的以太坊節點連接配接起來,也就形成了全球計算機。

對有一定程式設計經驗的人來說,Solidity 開發絕對不是什麼難事。Solidity 确實極容易上手,但是确實有很多細節需要注意的。一個智能合約是怎樣部署到以太坊網絡的呢?

我連敲3年代碼, 工資卻不如剛入職的TA!

以太坊智能合約可以通過編輯器經過rpc遠端調用(預設用8545端口)釋出到geth節點上,最終在以太坊網絡中運作。

衆所周知,我們在以太坊上執行智能合約是需要消耗 gas 的,也就是說沒有以太是不能運作的,這對很多童鞋來說表示難以了解。其實這涉及到經濟系統的利益問題,我們執行了一個指令,整個網絡都要同步資料,而這些指令是需要礦工進行打包交易的,如果礦工的利益不能保證,最後也就将導緻整個網絡無人維護。

那麼問題又來了,礦工有利益,開發者的收益如何實作呢?這就要具體問題具體分析,有些需求是為了保證資料存儲在區塊鍊上永不丢失,這個是儲存類價值。對于開發者來說,開發出來爆款的 DApp 就是最大的收益,參考之前火爆的加密貓。

TPS 較低也是阻礙區塊鍊發展的一大原因,這是區塊鍊的架構決定,達成共識方面本就需要時間。作為應用的開發者來說,應該讓使用者有更好的體驗。對于一個未确認的交易,我們可以采用監控事件的方式進行處理,這就是一個異步模式,這個事件其實類似于我們平常寫程式裡經常使用的 print。

合約代碼如下:

我連敲3年代碼, 工資卻不如剛入職的TA!

js代碼中添加事件的處理(map_event.js)

我連敲3年代碼, 工資卻不如剛入職的TA!

運作時啟動geth需要注意參數:

geth --datadir ./data --networkid 15 --port 30303 --rpc --rpcaddr 0.0.0.0 --rpcport 8545 --rpcvhosts "*" --rpcapi 'db,net,eth,web3,personal' --rpccorsdomain "*" --ws --wsaddr "localhost" --wsport "8546" --wsorigins "*" --nat "any" --nodiscover --dev --dev.period 1 console 2> 1.log

運作效果如下:

我連敲3年代碼, 工資卻不如剛入職的TA!