Sui 存储回扣(storage rebate)

icodezjb
发布于 阅读 835

Sui存储经济模型中, 删除object会返回部分gas。

这部分源码如下

/// Subtract the gas balance of \p gas_object by \p amount.
/// This function should never fail, since we checked that the budget is always
/// less than balance, and the amount is capped at the budget.
pub fn deduct_gas(gas_object: &mut Object, deduct_amount: u64, rebate_amount: u64) {
    // The object must be a gas coin as we have checked in transaction handle phase.
    let gas_coin = GasCoin::try_from(&*gas_object).unwrap();
    let balance = gas_coin.value();
    assert!(balance >= deduct_amount);
    let new_gas_coin = GasCoin::new(*gas_coin.id(), balance + rebate_amount - deduct_amount);
    let move_object = gas_object.data.try_as_move_mut().unwrap();
    move_object.update_contents_and_increment_version(bcs::to_bytes(&new_gas_coin).unwrap());
}

(1) 返回的部分gas,即rebate,实际上累加给了此次交易的gas object
(2) 返回的部分gas,实际上给了此次交易的sender
(3) 当此次交易的cost小于此次交易的rebate时,此次交易的gas object会增大。在浏览器中会看到gas为负值。

1. sui client gas

$ sui client gas
[warn] Client/Server api version mismatch, client api version : 0.15.3, server api version : 0.16.0
                 Object ID                  |  Gas Value 
----------------------------------------------------------------------
 0x1df4b23f857e0a9288c4400a1efba1cbef129eb8 |  18000000  
 0x3a80933c04837c22f5074d83202481ec524494e9 |  10000000  
 0x446f839a004a7ab9d67e424059336ee1890b95e8 |  10000000  
 0x4bb0745ab233148d24b06562d170a38ad9c25310 |  10000000  
 0x706ea03e88205b09c47742d5744d1f0c4ca1d66c |  10000000  
 0x71ad79468ec353130494e9415cf15355fff6a904 |  10000000  
 0x86b7bfd76aa8f593524e1a0e339d8d4864c0af02 |  10000000  
 0x91b753241174b7ef8e676ed1e9f0104d2df00bbc |  10000000  
 0x99c5ab8d29d09dd1af0ed9af8d54f33e31684bd1 |  10000000  
 0xa264bfb43d63d31da95274575fad23548c450282 |  10000000  
 0xacc2ae5c2e558492911cbc1b9ce515fbe6d7214c |  10000000  
 0xd03b75159732590849ec2db4bbaff5dfbcadec24 |  10000000  
 0xe401b516904a4cf57ff456e4108c9a40909f2e92 |  10000000  
 0xfc9379d98f5e264c1c64c08eca377db4b52f7abf |   1999946  
 0xfe18e00ae7ede89723386670d5d4a55e62cafa4c |   9985265  
$ sui client object --id 0x1df4b23f857e0a9288c4400a1efba1cbef129eb8 | grep Rebate
Storage Rebate: 16
$ sui client object --id 0x3a80933c04837c22f5074d83202481ec524494e9 | grep Rebate
Storage Rebate: 16
$ sui client object --id 0x446f839a004a7ab9d67e424059336ee1890b95e8 | grep Rebate
Storage Rebate: 16
$ sui client object --id 0x4bb0745ab233148d24b06562d170a38ad9c25310 | grep Rebate
Storage Rebate: 16
$ sui client object --id 0x706ea03e88205b09c47742d5744d1f0c4ca1d66c | grep Rebate
Storage Rebate: 16
$ sui client object --id 0x71ad79468ec353130494e9415cf15355fff6a904 | grep Rebate
Storage Rebate: 16
$ sui client object --id 0x86b7bfd76aa8f593524e1a0e339d8d4864c0af02 | grep Rebate
Storage Rebate: 16
$ sui client object --id 0x91b753241174b7ef8e676ed1e9f0104d2df00bbc | grep Rebate
Storage Rebate: 16
$ sui client object --id 0x99c5ab8d29d09dd1af0ed9af8d54f33e31684bd1 | grep Rebate
Storage Rebate: 16
$ sui client object --id 0xa264bfb43d63d31da95274575fad23548c450282 | grep Rebate
Storage Rebate: 16
$ sui client object --id 0xacc2ae5c2e558492911cbc1b9ce515fbe6d7214c | grep Rebate
Storage Rebate: 16
$ sui client object --id 0xd03b75159732590849ec2db4bbaff5dfbcadec24 | grep Rebate
Storage Rebate: 16
$ sui client object --id 0xe401b516904a4cf57ff456e4108c9a40909f2e92 | grep Rebate
Storage Rebate: 16
$ sui client object --id 0xfc9379d98f5e264c1c64c08eca377db4b52f7abf | grep Rebate
Storage Rebate: 16
$ sui client object --id 0xfe18e00ae7ede89723386670d5d4a55e62cafa4c | grep Rebate
Storage Rebate: 16

图中每个object storage rebate都是16,也就是说删除相应的object,rebate是16

0x3a80933c04837c22f5074d83202481ec524494e9 | 10000000

2. sui client pay_sui

$ sui client pay_sui --gas-budget 1000 \
    --recipients 0x82d770bab2d607b919f2dcc45a7491ede65fe6db \
    --input-coins 0x3a80933c04837c22f5074d83202481ec524494e9 \
                  0x446f839a004a7ab9d67e424059336ee1890b95e8 \
                  0x4bb0745ab233148d24b06562d170a38ad9c25310 \
                  0x706ea03e88205b09c47742d5744d1f0c4ca1d66c \
                  0x71ad79468ec353130494e9415cf15355fff6a904 \
                  0x86b7bfd76aa8f593524e1a0e339d8d4864c0af02 \
                  0x91b753241174b7ef8e676ed1e9f0104d2df00bbc \
                  0x99c5ab8d29d09dd1af0ed9af8d54f33e31684bd1 \
                  0xa264bfb43d63d31da95274575fad23548c450282 \
                  0xacc2ae5c2e558492911cbc1b9ce515fbe6d7214c \
                  0xd03b75159732590849ec2db4bbaff5dfbcadec24 \
    --amounts 100000000
[warn] Client/Server api version mismatch, client api version : 0.15.3, server api version : 0.16.0
----- Certificate ----
Transaction Hash: v7HjoMo1oOsHowlbLix1LTP6QBuNCoNbB62uofxDmqE=
Transaction Signature: AA==@kHpwi+SduJiA042NPlOTnZV34eQd16/mebuKkhluVLwEMWaee4c6QwhRhDAFZtJS2oZTja9DYkTlAXCFLlH/AQ==@O/WkNvFhnc189eZk22X0lFG24OP6FfZafO/VFn9PuQE=
Signed Authorities Bitmap: RoaringBitmap<[0, 1, 3]>
Transaction Kind : Pay SUI
Coins:
Object ID : 0x3a80933c04837c22f5074d83202481ec524494e9
Object ID : 0x446f839a004a7ab9d67e424059336ee1890b95e8
Object ID : 0x4bb0745ab233148d24b06562d170a38ad9c25310
Object ID : 0x706ea03e88205b09c47742d5744d1f0c4ca1d66c
Object ID : 0x71ad79468ec353130494e9415cf15355fff6a904
Object ID : 0x86b7bfd76aa8f593524e1a0e339d8d4864c0af02
Object ID : 0x91b753241174b7ef8e676ed1e9f0104d2df00bbc
Object ID : 0x99c5ab8d29d09dd1af0ed9af8d54f33e31684bd1
Object ID : 0xa264bfb43d63d31da95274575fad23548c450282
Object ID : 0xacc2ae5c2e558492911cbc1b9ce515fbe6d7214c
Object ID : 0xd03b75159732590849ec2db4bbaff5dfbcadec24
Recipients:
0x82d770bab2d607b919f2dcc45a7491ede65fe6db
Amounts:
100000000

----- Transaction Effects ----
Status : Success
Created Objects:
  - ID: 0xa0166c6e11e0664a7b7b32dccd06ade6d75da13f , Owner: Account Address ( 0x82d770bab2d607b919f2dcc45a7491ede65fe6db )
Mutated Objects:
  - ID: 0x3a80933c04837c22f5074d83202481ec524494e9 , Owner: Account Address ( 0x82d770bab2d607b919f2dcc45a7491ede65fe6db )
Deleted Objects:
  - ID: 0x446f839a004a7ab9d67e424059336ee1890b95e8
  - ID: 0x4bb0745ab233148d24b06562d170a38ad9c25310
  - ID: 0x706ea03e88205b09c47742d5744d1f0c4ca1d66c
  - ID: 0x71ad79468ec353130494e9415cf15355fff6a904
  - ID: 0x86b7bfd76aa8f593524e1a0e339d8d4864c0af02
  - ID: 0x91b753241174b7ef8e676ed1e9f0104d2df00bbc
  - ID: 0x99c5ab8d29d09dd1af0ed9af8d54f33e31684bd1
  - ID: 0xa264bfb43d63d31da95274575fad23548c450282
  - ID: 0xacc2ae5c2e558492911cbc1b9ce515fbe6d7214c
  - ID: 0xd03b75159732590849ec2db4bbaff5dfbcadec24

输入11个object,默认第一个是gas object,此次交易删除了10个object。

 $ sui client gas
[warn] Client/Server api version mismatch, client api version : 0.15.3, server api version : 0.16.0
                 Object ID                  |  Gas Value 
----------------------------------------------------------------------
 0x1df4b23f857e0a9288c4400a1efba1cbef129eb8 |  18000000  
 0x3a80933c04837c22f5074d83202481ec524494e9 |  10000010  
 0xa0166c6e11e0664a7b7b32dccd06ade6d75da13f |  100000000 
 0xe401b516904a4cf57ff456e4108c9a40909f2e92 |  10000000  
 0xfc9379d98f5e264c1c64c08eca377db4b52f7abf |   1999946  
 0xfe18e00ae7ede89723386670d5d4a55e62cafa4c |   9985265 

0x3a80933c04837c22f5074d83202481ec524494e9 | 10000010

对比之前的查询结果, value 增加了 10

3. 浏览器查询结果

可以看到 Total Gas Fee -0.00000001SUI

tx

标签: 每日闲话 #Sui
评论