Transactions

交易是否總是需要執行智能合約?

  • October 6, 2018

我與某人討論過,每次在乙太坊上發生交易(例如 ICO 代幣或 ETH)時,它都會通過智能合約或需要一個智能合約。

我想知道你最好的論據是什麼來證明他是錯的?

我認為最好的方法是在乙太坊上定義兩種可能的賬戶類型:

  1. 外部擁有的賬戶 (EOA)
  2. 智能合約

交易只能來自 EOA,可以針對其他 EOA 或智能合約,並且可以包含值(乙太)和數據有效負載。

掌握乙太坊 - 交易

當你建構一個包含價值的乙太坊交易時,它就相當於一筆支付。根據目標地址是否為合約,此類交易的行為會有所不同。

對於 EOA 地址,或者更確切地說,對於任何未在區塊鏈上標記為合約的地址,乙太坊將記錄狀態更改,並將您發送的值添加到地址的餘額中。如果該地址以前沒有見過,它將被添加到客戶端的狀態內部表示中,並將其餘額初始化為您的付款值。

因此,在這種情況下,兩個使用者之間可能存在不涉及智能合約或不需要智能合約的交易。它只是使用 EVM 定義的狀態機來更新兩個賬戶的餘額。

我建議您和您的朋友都閱讀我上面連結的章節。

編輯:順便說一句,你提到了 ICO 和代幣。在這種情況下,它總是需要智能合約,因為乙太坊中的代幣被表示為智能合約。上述“智能合約”免交易僅適用於乙太交易。

不。

@Shawn 的回答非常好。一個簡單的解釋方式是交易有一個收款賬戶。所有帳戶可能有也可能沒有程式碼。有程式碼的賬戶就是所謂的智能合約。交易可以發送到沒有任何程式碼的賬戶,因此不會執行智能合約。

所以目前的答案是否定的。但是,將來可能會發生變化,所有帳戶都會有程式碼。這是一個複雜的主題,可以使用術語account abstraction進行搜尋。

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