我有一个简单的智能契约,它的颜色是可变的,可以存储一个字符串。
如果我正确地退出,每个事务都可以更改此变量的状态,并永久存储到块链中。假设tx#1将其更改为红色,tx#1将其更改为蓝色,tx#2更改为红色,tx#3更改为绿色。
我想要红色,蓝色和绿色,而不仅仅是这个可变颜色的最后一种状态。
我怎样才能做到这一点?
谢谢
发布于 2017-01-04 16:27:13
通常的方法是为所有状态更改发出事件。这些可以被外部监视,包括从一开始和/或过滤器的重播。这是一个很好的方式来公开一个历史,而不使用太多的契约(昂贵)存储。
bytes32 x;
event LogChangedX(bytes32 X);
function doSomething(bytes32 newX) {
x = newX;
LogChangedX(x); 客户机(例如浏览器或服务器)可以查看事件日志,以发现发生在"x“中的所有更改。使用web3事件侦听器。
有一种更昂贵、存储更密集的方法,它更类似于数据库txn历史表,但大多数用例并不需要它。
希望能帮上忙。
https://ethereum.stackexchange.com/questions/11119
复制相似问题