Contract-Invocation
如何查詢乙太坊合約以從中獲取數據?
如何查詢乙太坊合約以從中獲取數據?
您可以
eth_call
按如下方式使用:傳遞該方法的 Keccak 雜湊的前 4 個字節(8 個字元)
0x
作為data
參數。您可以使用這樣的工具來獲取雜湊。在您的情況下,您希望對字元串進行雜湊處理buyPrice()
(如果方法接受參數,則不同)。這的前 8 個字元是8620410b
,導致上面提供的數據參數。返回值為十六進制。使用您喜歡的方法轉換回十進制。這是一個線上的。如果您的語言在字元串長度上阻塞,您可以刪除任何前導零。例如,在發佈時,返回值為
0x0000000000000000000000000000000000000000000000000002e1d9ae30ae00
。您可以將0x2e1d9ae30ae00
其減少為811275000000000
wei (0.000811275ETH)。請注意,速率限制為每秒 5 個請求。超過這個值,你可能會被列入黑名單。
您可以使用 API。您需要使用的函式是 eth_call。但是,您將需要以下字節碼:
function buyPrice
您可以通過 web3 1.0 獲得。另一種方法是也使用 web3,如下所示:
首先,buyPrice 由一個名為 same 的函式返回
buyPrice
:
function buyPrice() public
其次,您需要為合約創建一個實例,因為您需要合約的 ABI,您可以通過在 remix 中複製粘貼合約程式碼來獲得它,然後您可以使用 Infura 訪問乙太坊(免費)像這樣:
web3 = new Web3(new Web3.providers.HttpProvider("use infura acces token here")); ABI = "here all the ABI string" var pyramidContract = web3.eth.contract(ABI); var pyramidInstance = contrato.at('0xBc1869a652F68260428b382fd06C96196D92d02D') pyramidInstance.buyPrice(function(err,result){ console.log(result) // this is the returned value })
希望這有幫助。