Iot
為他人編寫合約數據以獲得獎勵
我想設計一個商業模式,包括:
- 物聯網設備,有地址和簽名數據寫入智能合約,但不能直接連接乙太坊網路,地址餘額為零。
- 物聯網設備管理器的智能合約所有者。
- 一個乙太坊節點,可以為物聯網設備寫入數據以獲得獎勵。
所以我寫了下面的solidity範常式式碼。
contract Storage { mapping(address => string[]) dataOfAddr; function writeData(address _addr, string _data, uint8 v, bytes32 r, bytes32 s) payable public returns(uint) { require(ecrecover(sha256(_data), v, r, s) == _addr); dataOfAddr[_addr].push(_data); msg.sender.transfer(1 ether); //for example return dataOfAddr[_addr].length; } }
讓物聯網設備發送
- 合約地址
- (它的地址、數據、簽名(v, r, s))
到乙太坊節點。乙太坊節點為其寫入數據,並從合約中獲得獎勵。
現在,問題是乙太坊節點如何確定它可以獲得獎勵?因為我們只能獲取合約的字節碼而不是原始碼。
可能還有另一種方式,但在我看來,
對於物聯網,您可能會使用 Respberry-pi 或其他東西,它可以連接到任何節點,也可以是物聯網設備作為節點。讓我們以 R-pi 為例,您可以在途中程式並觀看任何事件,執行任何操作。
現在問題是您想要平衡的地址。這取決於您使用的共識機制。如果是POW那就很難了。
在POA中,您可以使用任何累積乙太餘額的節點地址。如果您使用自己的網路(使用帳戶)您可以進一步使用任何活動的EOA(手動將乙太幣轉移到帳戶)。
對於合約,您可以部署合約並使用您的邏輯程式碼將乙太幣轉移到您不希望在自己的賬戶上獲得獎勵和獎勵的其他地址(上面解釋的賬戶)。
這可能會有所幫助。
你需要有一個前端來接收來自物聯網設備的數據並將契約發送給它,因為設備本身無法做到這一點。這可以使用web3.js來完成。或者如果你擅長 python,你可以使用web3.py
使用 web3,您可以實例化合約,這將使您能夠訪問其功能。交易需要使用在乙太坊節點中解鎖資金的帳戶來完成,以支付汽油費。
希望這可以幫助