Go-Ethereum

是否可以“不”安裝“Geth”或“Parity”來呼叫智能合約的功能?

  • August 31, 2018

是否可以呼叫智能合約的功能來發送交易(例如,在乙太坊區塊鏈上寫入)但“不”安裝“Geth”或“Parity”客戶端?

在一個更普遍的問題中,是否可以在不安裝 Geth 或 Parity 的情況下與乙太坊區塊鏈進行互動?

您可以下載合約程式碼,以及該合約用於儲存的StateDB部分,以及合約呼叫涉及的地址的SateDB部分,然後您可以使用cmd/evm二進制執行該合約的程式碼:

cmd/evm run --input 0xa5e4d2b41223289af53234 --code 0xcontract'scode ....

這很 hacky,但你問它是否可能,這就是不安裝GethParity.

關於一般性問題——在不使用客戶端的情況下與乙太坊進行互動,這取決於“互動”的定義。如果僅限於發送交易,那麼簡短的回答是肯定的,前提是:

  • 擁有賬戶的私鑰
  • 知道帳戶的隨機數
  • 具有被呼叫合約的 ABI(簡單的支付交易不需要)。

有了上述,可以逐字節構造事務。一個實際的例子是here。建構的“原始”交易可以使用諸如 etherscan 的廣播器之類的工具發送(好吧,理論上即使這也可以擺脫,但隨後必須實施 - 至少部分實施 - RLPx協議)。

事實上,這就是區塊鏈交易難以審查的原因:人們總是可以離線建構交易,並通過文章(甚至語音)將字節發送給朋友,然後他們可以幫助推送到網路。

雖然,問題是“單向”發送很難被稱為“互動”。為了讓事情有兩種方式,需要一個接收器,它需要檢查傳入消息的有效性。反過來,這需要完全實施該協議。現在我們剛剛帶回了“客戶”。

對於最初的問題,在不使用 geth 或 parity 的情況下呼叫合約的方法,可以使用上述文章中相同的字節構造方法,儘管合約 ABI 變得必要。有關更多詳細資訊,請參閱此問題

引用自:https://ethereum.stackexchange.com/questions/57836