Contract-Design
智能合約如何在不持有私鑰的情況下持有資金?
我了解智能合約:
- 沒有私鑰
- 他們可以持有、接收和使用乙太幣
後者如何工作?假設我想向智能合約發送 1 個 eth 並將其鎖定在那裡,直到 B 呼叫同一合約上的某個函式。智能合約如何持有我的 1 eth,以及如何在收到 B 人簽署的交易後再次釋放它?
這將被簡化,以嘗試和說明。
任何賬戶都可以通過發送呼叫函式的交易來呼叫任何智能合約的任何函式。當您發送這樣一個“函式呼叫”事務時,該函式中的程式碼“變得生動”並自行執行。
通常,該函式所做的第一件事是檢查呼叫它的帳戶是否有權呼叫它。如果不是,該函式將失敗/回滾事務(通過呼叫“revert”)。
在您的範例中,想像以下流程:
- 您(或任何人)通過將合約載入到鏈上(在“創建”交易中)來創建合約。您將地址 B 作為授權提款人添加到合約中。
- 你向合約發送 1 ETH。合約現在有 1 ETH 的餘額。
- 賬戶 B 在合約上呼叫您自定義的“提款”功能。提款功能首先檢查以確保賬戶 B 被授權提款,然後使用內置的solidity“發送”功能將乙太幣發送到地址 B。
Solidity 抽像出交易的簽名,因此您始終可以信任
msg.sender
.就像我說的那樣,這過於簡單化了,所以有幾個重要的小技術性的東西被掩蓋了,但它給了你基本的要點。