Ethereum 智能合約實戰技巧 從零到壹 陳耀鑫 工研院資通所 2017/5/18
本次目標 區塊鏈及智能合約簡介 開發工具介紹 如何依照自己需求選擇最合適的工具 滿滿的demo
密碼經濟學 密碼學 + 經濟激勵 = 達到資訊安全目標 Cryptoecnomic 確保過去的資料不可竄改、一致等特性 激勵資料特性能夠在未來繼續維持
雜湊函數(Hash Function) 輸入任意長度的字串 輸出固定長度的結果(ex. 256 bits) 不可逆、無碰撞 https://zh.wikipedia.org/wiki/%E6%95%A3%E5%88%97%E5%87%BD%E6%95%B8
Hash Pointer 是指向資料儲存的地方,且 是資料的hash值 若我們有一個hash pointer,我們能夠 將資料取回來,且 驗證他是否沒被竄改
(data) H( )
關鍵重點 建立一個有hash pointer的資料結構
偵測竄改 H( ) prev: H( ) prev: H( ) prev: H( ) data data data
Merkle Tree 具備hash pointer的二元樹
Blockchain 一直隨時間增長的Merkle Tree roots: additions:
Bitcoin roots: 防止雙花問題 一個區塊鏈帳本 Transactions: ----------- -----------
Ethereum roots: 可撰寫Smart Contract 將電腦放到區塊鏈上 VM States: -----------
Ethereum區塊內容
Ethereum: user account & contracts EVM A A C C C A user account C contract
在兩個account之間傳送ether EVM A A C C C A user account C contract
呼叫contract的method EVM A A C C C A user account C contract
contract的回應可以是傳ether給另一個account EVM A A C C C A user account C contract
也可以是更複雜的反應 EVM A A C C C A user account C contract
合約怎麼產生的? EVM A A user account C contract
傳送一個特別的交易 EVM A 沒有接收帳號 附上可執行的合約bytecode C A user account C contract
Ethereum toolchain Ethereum Client Ethereum Browser Solidity compiler cpp-ethereum go-ethereum pyethereum parity ethereumjs-testrpc (simulator) mist metamask parity solc mist browser-solidity parity truffle 單純想要體驗,不想架設環境 browser-solidity + metamask 懂nodejs,提升開發效率 ethereumjs-testrpc + truffle 非常有耐心的人 mist 想專注開發合約 parity
Browser-solidity + metamask
一般使用者註冊 匿名方式使用,無需註冊 產生一組金鑰對 公開金鑰(帳號) 私有金鑰 Key seed private key public key address 不可逆 不可逆
Ethereum Networks 每個network都有一條自己的區塊鏈 mainnet – 主網路 1 ether = 90 usd testnet ROPSTEN (Revived) - Proof Of Work KOVAN - Proof Of Authority (Parity only) RINKEBY - Clique Consensus (Geth only) private network 自己架設的 每個network都有一條自己的區塊鏈
Ethereum node介面 JSON RPC介面 使用者可以發送交易 每個node透過tcp/ip的30303 port互相連接成一個p2p網路
ethereumjs-testrpc + truffle 開發合約應用程式最快 編譯、部署、網頁一次完成 truffle init webpack truffle compile truffle migrate npm run build npm run dev
Web3.js JavaScript API 透過JSON RPC介面跟etherrum node通訊 實作JSON RPC介面
Mist
Parity 容易編譯、部署 自動化產生合約UI介面 truffle init webpack truffle compile truffle migrate npm run build npm run dev
今天最重要就這一頁 Taipei Ethereum Meetup https://medium.com/@yaohsin 我們是一群加密貨幣、區塊鏈、智能契約的技術愛好者,藉由每個月舉辦數次的實體聚會促進知識交流 https://github.com/EtherTW/Taipei-Ethereum-Wiki/wiki https://medium.com/@yaohsin