传递函数是如何表现的?正在查看我创建的函数,在删除决定是否允许该函数的数据之前,我们将以太从合同中转移出去。很多代码是隐藏的,因为它并不是真正相关的。
我想知道user.transfer()中的传输是何时发生的?假设有人在同一时间两次调用该函数,因此这两个调用都进入if语句,user.transfer()被调用了两次,因此调用了两次。
之后,在删除自行车中;后面的调用将抛出一个错误,因为信息已经被删除。在调用中,删除自行车;抛出一个错误,user.transfer还会被执行吗?还是会恢复,从而彻底消除问题?如果它是任何其他代码,由于错误,整个事务将被恢复而不被执行,但是user.transfer()是否也是那样的呢?
我知道我可以在user.transfer上移动删除自行车,这不会有什么问题,但更多的是出于好奇。
func{
//some code and checks whether the _serialNo, corresponds to a stolen bike etc.
user.transfer(Bikes[_serialNo].insuredAmount);
delete Bikes[_serialNo];
}发布于 2018-06-14 14:54:58
假设有人在同一时间两次调用该函数,因此这两个调用都进入if语句,user.transfer()被调用了两次,因此调用了两次。
这是不可能的,因为没有并发性。如果提交了两个事务,一个事务将在另一个事务之前执行(完全)。
https://ethereum.stackexchange.com/questions/51217
复制相似问题