智能合约是否有可能查看过去完成的交易,换句话说,智能合约有可能自成立以来查看谁发送了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. Go-Ethereum:Android智能合约交互问题
- 6. 分区历史SQL Server
- 7. 的Visual Studio块链智能合同部署问题
- 8. 历史的历史
- 9. java集合框架历史
- 10. Git子树合并策略,可能没有合并历史?
- 11. 来自智能合约的呼叫功能
- 12. 在保留历史的情况下合并Git子模块
- 13. 约链职能
- 14. VSO git文件历史中的“简单历史记录(默认)”和“完整历史记录”有什么区别?
- 15. 维护emacs缓冲区历史
- 16. 参数SCD模块 - 历史型
- 17. python cmd模块中的持久历史
- 18. 历史/怪git的子模块
- 19. 访问审计检查+历史块!
- 20. 链接到历史的Chrome扩展
- 21. 保持git子模块的历史独立于包含回购历史
- 22. jquery的历史,检查历史堆栈
- 23. GWT历史记录:历史记号
- 24. 捕获历史进程历史UNIX?
- 25. 如何显示智能合约中的所有事件日志?
- 26. Solidity:更改已发布的智能合约中变量的值
- 27. 智能合约中Ether在自毁后会发生什么
- 28. 向以太坊智能合约发送价值时出错
- 29. 外部派对访问智能合约(Block Chain)
- 30. 如何将智能合约与Java应用程序集成?
不,我真的试图找出如果智能合同可以直接读取形成blockchain。但事实并非如此。 – RFVenter
是的,你需要手动实现它。如果您有区块链浏览器(外部程序),如https://live.ether.camp/,则可以查看特定块的内容。但是,如果您想跟踪合约中的某些内容并以编程方式检索它,则需要手动实施。 –