Solidity

如何將數據發送到區塊鏈上的另一個地址?

  • March 29, 2022

我一直在練習使用solidity和testrpc編寫智能合約。我如何編寫和測試一個簡單的腳本,它將向區塊鏈上的另一個使用者發送消息(例如“hello world”)。到目前為止,我編寫的所有智能合約都只涉及從一個地址改變數據。消息將儲存在哪裡,使用者將如何閱讀消息?我對理解這個問題的高級架構感到非常困惑,並且非常感謝任何輸入。

數據始終儲存在智能合約中。因此,從技術上講,您不會將消息發送到另一個地址,但您會將所述消息發送到契約,然後收件人將能夠訪問它。

這是一個非常簡化的範例:

contract Messenger {

 mapping (address => string) message;

 function sendMessage(address _recipient, string _message){
   message[_recipient] = _message;
 }

 function readMessage() returns (string) {
   return message[msg.sender];
 }

}

正如我所提到的,這是一個非常簡化的例子來說明我在說什麼,它不會作為一個“聊天應用程序”,話雖如此……

在此範例中,您有一個映射,它為使用者儲存給定消息。基本上,任何人都可以呼叫 sendMessage 函式,提供地址(消息的接收者)和消息本身。

然後,接收者只需呼叫 readMessage() 將查找映射到他的地址的消息。

因此,如您所見,地址 A 並沒有直接向地址 B 發送消息,事實上,您不能直接從外部帳戶(人)“通信”到另一個外部帳戶,除了發送乙太幣. 兩者之間必須有一個智能合約,它將接收一個命令並執行它被程式的任何事情。在這種情況下,它接收消息和收件人並儲存該數據,以便收件人以後可以訪問它。

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