從智能合約原始檔、編譯、部署,一氣呵成
我想大部分的人應該都是為了寫智能合約(Smart Contract)而選擇使用Ethereum,在開發應用程式(Dapp)時,若能透過程式碼自動部署智能合約,就像truffle一樣,即可以省下可觀的測試時間。
本教學文適合有Node.js與Solidity基礎的讀者。
Contract才是Dapp的核心,不是nodejs
如果你想要研究Solidity,但沒碰過nodejs,那麼本篇是專門為你而寫的。只需要使用網頁版的Solidity編輯器(網址),以及安裝MetaMask就可以開心的撰寫、部署、測試智能合約。
會想寫這篇的原因是這樣的,當初我想學如何寫Solidity,作為一個初學者大概就是直接裝Ethereum官網提供的Wallet,使用它內建的編輯器來開發,但是部署的時候經常會失敗,也找不出原因,區塊同步又非常緩慢,實在是不太好用。
本篇是 Mastering Bitcoin 這本書的第五章心得,如果你沒有這本書的話可以去這邊,書跟心得都不會講的太深入,我的目標是希望不懂寫程式的都能看得懂 (順便幫自己做筆記),希望這目標不會太困難。
第二章我們提過整個區塊鏈的架構,其中的段落 Bitcoin Transaction 也對比特幣的交易 (transaction)…
智能合約如何取得外界資料。
智能合約是在EVM (Ethereum Virtual Machine)中執行的,它是個封閉的環境,所有執行過程都離不開EVM,換句話說,合約沒辦法由EVM內部向外界取得任何資料。以下圖來解釋,外部帳號A1可以呼叫合約C1所提供的功能,合約C1執行的過程中,可以傳送ether給外部帳號A2,或是再呼叫合約C2,但是不管執行過程如何複雜,就是離不開EVM。