如果钱包中有“ FreezeToken”,请冻结钱包。 如果钱包中有“ ThawToken”,它将取消冻结。 此代码是失败的示例。
//write data for data width of 4
assign [8*4 -1:0] data = {4'hF,4'hE,4'hD,4'hC,4'hB,4'hA,4'h9,4'h8};
//so now data to each data bit serializer will be
//8:1 data for serializers of
// bit-- 3-- 2-- 1-- 0
// 4'b___1___1___1___1
// 4'b___1___1___1___0
// 4'b___1___1___0___1
// 4'b___1___1___0___0
// 4'b___1___0___1___1
// 4'b___1___0___1___0
// 4'b___1___0___0___1
// 4'b___1___0___0___0
// data for serializer of bit 0 is 8'b10101010
// data for serializer of bit 1 is 8'b11001100
// data for serializer of bit 2 is 8'b11110000
// data for serializer of bit 3 is 8'b11111111
assign [7:0] data_to_phy_serializers [3:0] = '{
8'b11111111,
8'b11110000,
8'b11001100,
8'b10101010
};
TransferTransaction成功,但ExchangeTransaction失败。 如何更改此代码?请告诉我。
答案 0 :(得分:1)
我猜您正在创建一个智能帐户? 从我在代码中看到的是,您使用了2次ThawToken,一次结果为true,另一次结果为false。我的猜测是您希望将其中2个替换为FreezeToken
在您的示例中,您还具有“ ExchangeTransaction。”,从我从您的代码可以理解的角度来看,这里似乎不需要此点。
此外,根据示例,如果{}中应该包含结构,则似乎是您的全部。示例:https://github.com/wavesplatform/ride-examples/blob/bc8db2342f53fe1554a10dc5aaa211b1542a5ca1/smart-assets/HotPotatoToken.ride#L41
但是,我认为可以通过&&语句解决此问题,因为不再需要第二个if-then-else。 我建议的是进行以下检查:
检查ThawToken是否不在钱包中,如果是这种情况,请检查Frozentoken是否在钱包中。
如果ThawToken是,并且FreezeToken也=>钱包可用,因为ThawToken将其释放。
如果ThawToken不是,并且FreezeToken为1或更多=>钱包已锁定,因为只有FreezeToken。
如果ThawToken不是,并且FreezeToken不是=>钱包免费,因为没有FreezeToken
if (assetBalance(e.sender,ThawToken) == 0 &&
assetBalance(e.sender,FreezeToken) >= 1 ) then{
false
}else{
true
}
同样,要阻止所有交易并冻结钱包,对于所有类型的使用,您都需要筛选另一种类型:交易,请注意,如果锁定了帐户,这也会禁用更改脚本的选项。 要阻止转移交易,请使用:TransferTransaction。
所有类型都可以在这里找到: https://docs.wavesplatform.com/en/smart-contracts/ride-language/standard-library.html