Solidity
使用智能合約傳遞加密數據
基於A滿足B的要求**的先決條件,我如何利用(也許自動化)智能合約將一些加密數據從A傳送到B。我需要一個預言機來進行這種類型的互動嗎?如果需要,如何成功地推出這種通信?
您可以在區塊鏈中對支付行為進行建模,並讓您的下載伺服器監控合約事件。如果地址 A 購買了數據,地址 A 的所有者可以向您的下載伺服器發送一個簽名的 http 請求(使用地址 A 的私鑰簽名),以證明下載請求來自地址私鑰的所有者一種。有了簽名,您的下載伺服器可以檢查區塊鏈上的購買事件,以驗證 A 是否購買了數據並相應地提供文件。
如果您每 t 小時需要 x 數量,這也將起作用。
例子:
contract DigitalDownload { ... event DigitalDownloadPurchasedEvent(uint time, address purchaser) ... function purchaseDigitalDownload() public payable { require(msg.value == PRICE); emit DigitalDownloadPurchasedEvent(now, msg.sender); } } buyer --- > BC: purchaseService transaction buyer --- signed http req ---> Server: download content ...the request is signed with the private key of the msg.sender... ...server makes ecrecover on the signature and recovers the public ethereum address of the request sender... server ---> BC: check `DigitalDownloadPurchasedEvent` exists for the address recovered from the signature and serve the file if yes.