我正在考虑简单的帐户安全开发人员

时间:2019-04-08 06:42:52

标签: wavesplatform ride

如果钱包中有“ 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失败。 如何更改此代码?请告诉我。

1 个答案:

答案 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