myetherwallet如何訪問區塊鏈?(技術上)
我有興趣重現 myetherwallet 中使用的一些功能,但不是金融功能,而是允許使用者基於錢包訪問某些詳細資訊。
我在 github 上查看了 myetherwallet,但我不明白它是如何工作的。
有人知道它如何基於私鑰訪問區塊鏈嗎?即區塊鏈上的塊、頭等查詢過程是什麼?是否有某種方法可以使用 sql 類型的訪問,例如
if walletaddress= "..." then return block-details.
MyEtherWallet 執行一個乙太坊節點,並在該節點上啟用 RPC。這允許客戶端 web3 庫連接到他們的節點,並請求餘額等資訊,或送出簽名交易。
更明智的是,他們使用了一個名為 ethereumjs-wallet 的庫,它允許您將私鑰轉換為地址(然後用於請求餘額),以及一個名為 ethereumjs-tx 的庫,它可以使用私鑰簽署原始交易。
它的核心是使用橢圓曲線加密技術對消息進行簽名。這是一種用於許多事情的方法,而不僅僅是乙太坊。最重要的是,你還有一層乙太坊的東西——比如乙太坊地址、乙太坊加密規範和格式等。
解鎖錢包的最佳選擇是 ethereum-js 錢包。從那裡開始,還有很多其他動人的部分:
手動建構交易(離線,而不是通過 geth/parity 中的帳戶):https ://github.com/ethereumjs/ethereumjs-tx
AWS 的東西:https ://github.com/MyEtherWallet/docker-geth-lb
API:https ://www.myetherapi.com/
Infura 的 API:https ://blog.infura.io/infrastructure-means-apis-introducing-the-infura-api-49f2951bb6ba
Etherscan 的 API:https ://etherscan.io/apis
由於 MEW 變得如此復雜,探索最早的 MEW 版本可能符合您的最大利益。你不應該在這個版本中使用程式碼,因為它已經過時了,但我發現從概念上講它已經幫助人們了解正在發生的事情:https ://github.com/kvhnuke/etherwallet/tree/mew1 .0