智能合約是否有可能查看過去完成的交易,換句話說,智能合約有可能自成立以來查看誰發送了Ether?智能合約區塊鏈歷史
1
A
回答
1
如果您正在嘗試使用您的智能合約形式閱讀交易,則區塊鏈中的固定語言中的答案是「否」不存在。你可以通過Rob的例子來完成Web3.js,或者在外部數據庫中保存transactiosn的日誌,這就像檢查大量的塊和大量事務以及異常問題的複雜性一樣。
在其他情況下,你可以使用一個外部API用於檢查交易和有歷史,爲例子:https://etherscan.io/apis
3
如果智能合約具有數據結構以記錄這些活動,那麼這將是可能的。
草草準備例如:
pragma solidity ^0.4.6;
contract TrackPayments {
struct PaymentStruct {
address sender;
uint amount;
}
// look up the struct with payment details using the unique key for each payment
mapping(bytes32 => PaymentStruct) public paymentStructs;
// payment keys in order received
bytes32[] public paymentKeyList;
event LogPaymentReceived(address sender, uint amount);
function payMe() public payable returns(bool success) {
if(msg.value==0) throw;
// make a unique key ...
bytes32 newKey = sha3(msg.sender, paymentKeyList.length);
paymentStructs[newKey].sender = msg.sender;
paymentStructs[newKey].amount = msg.value;
paymentKeyList.push(newKey);
LogPaymentReceived(msg.sender, msg.value);
return true;
}
function getPaymentCount() public constant returns(uint paymentCount) { return paymentKeyList.length; }
}
這可能是多一點存儲效率以犧牲順序或隨機接入的費用。這樣做兩個。
希望它有幫助。
相關問題
- 1. Eris區塊鏈 - Monax在部署智能合約時出錯
- 2. 區塊鏈以太網中的智能合約
- 3. R中的期貨歷史合約
- 4. 複製智能合約
- 5. 在以太坊區塊鏈中,智能合約的交易細節會被寫入?
- 6. Go-Ethereum:Android智能合約交互問題
- 7. cassandra和歷史數據時間明智
- 8. 分區歷史SQL Server
- 9. 的Visual Studio塊鏈智能合同部署問題
- 10. 歷史的歷史
- 11. java集合框架歷史
- 12. Git子樹合併策略,可能沒有合併歷史?
- 13. 來自智能合約的呼叫功能
- 14. PHP:MYSQL的歷史功能?
- 15. Shell歷史命令 - 功能
- 16. Xcode基本歷史功能
- 17. 在保留歷史的情況下合併Git子模塊
- 18. Azure IOT和Azure區塊鏈整合
- 19. 約鏈職能
- 20. VSO git文件歷史中的「簡單歷史記錄(默認)」和「完整歷史記錄」有什麼區別?
- 21. 維護emacs緩衝區歷史
- 22. 歷史
- 23. 歷史
- 24. 刪除模塊歷史記錄CVS
- 25. Git:不存儲子模塊的歷史
- 26. 訪問審計檢查+歷史塊!
- 27. 重命名CVS模塊不失歷史
- 28. 歷史/怪git的子模塊
- 29. 保存塊的執行歷史
- 30. 參數SCD模塊 - 歷史型
不,我真的試圖找出如果智能合同可以直接讀取形成blockchain。但事實並非如此。 – RFVenter
是的,你需要手動實現它。如果您有區塊鏈瀏覽器(外部程序),如https://live.ether.camp/,則可以查看特定塊的內容。但是,如果您想跟蹤合約中的某些內容並以編程方式檢索它,則需要手動實施。 –