Просмотр исходного кода

Substrate: Remove seal_tombstone_deposit (#1022)

Cyrill Leutwiler 3 лет назад
Родитель
Сommit
6083938df3

+ 0 - 4
docs/language/builtins.rst

@@ -179,10 +179,6 @@ uint64 ``block.slot``
 Parity Substrate
 ~~~~~~~~~~~~~~~~
 
-uint128 ``block.tombstone_deposit``
-    The amount needed for a tombstone. Without it, contracts will disappear
-    completely if the balance runs out.
-
 uint128 ``block.minimum_deposit``
     The minimum amonut needed to create a contract. This does not include
     storage rent.

+ 0 - 2
src/codegen/mod.rs

@@ -1255,7 +1255,6 @@ pub enum Builtin {
     Signature,
     SignatureVerify,
     Timestamp,
-    TombstoneDeposit,
     Value,
     WriteAddress,
     WriteInt8,
@@ -1315,7 +1314,6 @@ impl From<&ast::Builtin> for Builtin {
             ast::Builtin::Signature => Builtin::Signature,
             ast::Builtin::SignatureVerify => Builtin::SignatureVerify,
             ast::Builtin::Timestamp => Builtin::Timestamp,
-            ast::Builtin::TombstoneDeposit => Builtin::TombstoneDeposit,
             ast::Builtin::Value => Builtin::Value,
             ast::Builtin::WriteAddress => Builtin::WriteAddress,
             ast::Builtin::WriteInt8 => Builtin::WriteInt8,

+ 0 - 2
src/codegen/tests.rs

@@ -45,7 +45,6 @@ fn test_builtin_conversion() {
         ast::Builtin::Signature,
         ast::Builtin::SignatureVerify,
         ast::Builtin::Timestamp,
-        ast::Builtin::TombstoneDeposit,
         ast::Builtin::Value,
         ast::Builtin::WriteAddress,
         ast::Builtin::WriteInt8,
@@ -103,7 +102,6 @@ fn test_builtin_conversion() {
         codegen::Builtin::Signature,
         codegen::Builtin::SignatureVerify,
         codegen::Builtin::Timestamp,
-        codegen::Builtin::TombstoneDeposit,
         codegen::Builtin::Value,
         codegen::Builtin::WriteAddress,
         codegen::Builtin::WriteInt8,

+ 0 - 10
src/emit/substrate/mod.rs

@@ -107,7 +107,6 @@ impl SubstrateTarget {
             "seal_gas_price",
             "seal_gas_left",
             "seal_caller",
-            "seal_tombstone_deposit",
             "seal_terminate",
             "seal_deposit_event",
             "seal_transfer",
@@ -445,15 +444,6 @@ impl SubstrateTarget {
             Some(Linkage::External),
         );
 
-        binary.module.add_function(
-            "seal_tombstone_deposit",
-            binary
-                .context
-                .void_type()
-                .fn_type(&[u8_ptr, u32_ptr], false),
-            Some(Linkage::External),
-        );
-
         binary.module.add_function(
             "seal_weight_to_fee",
             binary

+ 0 - 7
src/emit/substrate/target.rs

@@ -2231,13 +2231,6 @@ impl<'a> TargetRuntime<'a> for SubstrateTarget {
                     ns.value_length as u32 * 8
                 )
             }
-            codegen::Expression::Builtin(_, _, codegen::Builtin::TombstoneDeposit, _) => {
-                get_seal_value!(
-                    "tombstone_deposit",
-                    "seal_tombstone_deposit",
-                    ns.value_length as u32 * 8
-                )
-            }
             codegen::Expression::Builtin(_, _, codegen::Builtin::Random, args) => {
                 let subject =
                     expression(self, binary, &args[0], vartab, function, ns).into_pointer_value();

+ 0 - 1
src/sema/ast.rs

@@ -1126,7 +1126,6 @@ pub enum Builtin {
     BlockHash,
     Random,
     MinimumBalance,
-    TombstoneDeposit,
     AbiDecode,
     // TODO: AbiBorshDecode is temporary and should be removed once Brosh encoding is fully
     // wired for Solana

+ 1 - 12
src/sema/builtin.rs

@@ -352,7 +352,7 @@ static BUILTIN_FUNCTIONS: Lazy<[Prototype; 28]> = Lazy::new(|| {
 });
 
 // A list of all Solidity builtins variables
-static BUILTIN_VARIABLE: Lazy<[Prototype; 16]> = Lazy::new(|| {
+static BUILTIN_VARIABLE: Lazy<[Prototype; 15]> = Lazy::new(|| {
     [
         Prototype {
             builtin: Builtin::BlockCoinbase,
@@ -431,17 +431,6 @@ static BUILTIN_VARIABLE: Lazy<[Prototype; 16]> = Lazy::new(|| {
             doc: "Current timestamp in unix epoch (seconds since 1970)",
             constant: false,
         },
-        Prototype {
-            builtin: Builtin::TombstoneDeposit,
-            namespace: Some("block"),
-            method: None,
-            name: "tombstone_deposit",
-            params: vec![],
-            ret: vec![Type::Value],
-            target: vec![Target::default_substrate()],
-            doc: "Deposit required for a tombstone",
-            constant: false,
-        },
         Prototype {
             builtin: Builtin::MinimumBalance,
             namespace: Some("block"),

+ 0 - 1
src/sema/mutability.rs

@@ -257,7 +257,6 @@ fn read_expression(expr: &Expression, state: &mut StateCheck) -> bool {
         | Expression::Builtin(loc, _, Builtin::Gasleft, _)
         | Expression::Builtin(loc, _, Builtin::Gasprice, _)
         | Expression::Builtin(loc, _, Builtin::GasLimit, _)
-        | Expression::Builtin(loc, _, Builtin::TombstoneDeposit, _)
         | Expression::Builtin(loc, _, Builtin::MinimumBalance, _)
         | Expression::Builtin(loc, _, Builtin::Balance, _)
         | Expression::Builtin(loc, _, Builtin::Random, _)

+ 1 - 1
tests/contract_testcases/substrate/builtins/block_02.dot

@@ -2,7 +2,7 @@ strict digraph "tests/contract_testcases/substrate/builtins/block_02.sol" {
 	contract [label="contract bar\ntests/contract_testcases/substrate/builtins/block_02.sol:2:9-8:10"]
 	test [label="function test\ncontract: bar\ntests/contract_testcases/substrate/builtins/block_02.sol:3:13-35\nsignature test()\nvisibility public\nmutability nonpayable"]
 	diagnostic [label="found contract 'bar'\nlevel Debug\ntests/contract_testcases/substrate/builtins/block_02.sol:2:9-8:10"]
-	diagnostic_5 [label="implicit conversion would change sign from uint128 to int64\nlevel Error\ntests/contract_testcases/substrate/builtins/block_02.sol:4:27-50"]
+	diagnostic_5 [label="implicit conversion would change sign from uint128 to int64\nlevel Error\ntests/contract_testcases/substrate/builtins/block_02.sol:4:27-48"]
 	contracts -> contract
 	contract -> test [label="function"]
 	diagnostics -> diagnostic [label="Debug"]

+ 1 - 1
tests/contract_testcases/substrate/builtins/block_02.sol

@@ -1,7 +1,7 @@
 
         contract bar {
             function test() public {
-                int64 b = block.tombstone_deposit;
+                int64 b = block.minimum_balance;
 
                 assert(b == 93_603_701_976_053);
             }

+ 1 - 1
tests/contract_testcases/substrate/builtins/block_03.dot

@@ -2,7 +2,7 @@ strict digraph "tests/contract_testcases/substrate/builtins/block_03.sol" {
 	contract [label="contract bar\ntests/contract_testcases/substrate/builtins/block_03.sol:2:9-8:10"]
 	test [label="function test\ncontract: bar\ntests/contract_testcases/substrate/builtins/block_03.sol:3:13-35\nsignature test()\nvisibility public\nmutability nonpayable"]
 	diagnostic [label="found contract 'bar'\nlevel Debug\ntests/contract_testcases/substrate/builtins/block_03.sol:2:9-8:10"]
-	diagnostic_5 [label="implicit conversion would change sign from uint128 to int64\nlevel Error\ntests/contract_testcases/substrate/builtins/block_03.sol:4:27-48"]
+	diagnostic_5 [label="builtin 'block.coinbase' does not exist\nlevel Error\ntests/contract_testcases/substrate/builtins/block_03.sol:4:27-32"]
 	contracts -> contract
 	contract -> test [label="function"]
 	diagnostics -> diagnostic [label="Debug"]

+ 1 - 1
tests/contract_testcases/substrate/builtins/block_03.sol

@@ -1,7 +1,7 @@
 
         contract bar {
             function test() public {
-                int64 b = block.minimum_balance;
+                int64 b = block.coinbase;
 
                 assert(b == 93_603_701_976_053);
             }

+ 1 - 1
tests/contract_testcases/substrate/builtins/block_04.dot

@@ -2,7 +2,7 @@ strict digraph "tests/contract_testcases/substrate/builtins/block_04.sol" {
 	contract [label="contract bar\ntests/contract_testcases/substrate/builtins/block_04.sol:2:9-8:10"]
 	test [label="function test\ncontract: bar\ntests/contract_testcases/substrate/builtins/block_04.sol:3:13-35\nsignature test()\nvisibility public\nmutability nonpayable"]
 	diagnostic [label="found contract 'bar'\nlevel Debug\ntests/contract_testcases/substrate/builtins/block_04.sol:2:9-8:10"]
-	diagnostic_5 [label="builtin 'block.coinbase' does not exist\nlevel Error\ntests/contract_testcases/substrate/builtins/block_04.sol:4:27-32"]
+	diagnostic_5 [label="builtin 'block.gaslimit' does not exist\nlevel Error\ntests/contract_testcases/substrate/builtins/block_04.sol:4:27-32"]
 	contracts -> contract
 	contract -> test [label="function"]
 	diagnostics -> diagnostic [label="Debug"]

+ 1 - 1
tests/contract_testcases/substrate/builtins/block_04.sol

@@ -1,7 +1,7 @@
 
         contract bar {
             function test() public {
-                int64 b = block.coinbase;
+                int64 b = block.gaslimit;
 
                 assert(b == 93_603_701_976_053);
             }

+ 1 - 1
tests/contract_testcases/substrate/builtins/block_05.dot

@@ -2,7 +2,7 @@ strict digraph "tests/contract_testcases/substrate/builtins/block_05.sol" {
 	contract [label="contract bar\ntests/contract_testcases/substrate/builtins/block_05.sol:2:9-8:10"]
 	test [label="function test\ncontract: bar\ntests/contract_testcases/substrate/builtins/block_05.sol:3:13-35\nsignature test()\nvisibility public\nmutability nonpayable"]
 	diagnostic [label="found contract 'bar'\nlevel Debug\ntests/contract_testcases/substrate/builtins/block_05.sol:2:9-8:10"]
-	diagnostic_5 [label="builtin 'block.gaslimit' does not exist\nlevel Error\ntests/contract_testcases/substrate/builtins/block_05.sol:4:27-32"]
+	diagnostic_5 [label="builtin 'block.difficulty' does not exist\nlevel Error\ntests/contract_testcases/substrate/builtins/block_05.sol:4:27-32"]
 	contracts -> contract
 	contract -> test [label="function"]
 	diagnostics -> diagnostic [label="Debug"]

+ 1 - 1
tests/contract_testcases/substrate/builtins/block_05.sol

@@ -1,7 +1,7 @@
 
         contract bar {
             function test() public {
-                int64 b = block.gaslimit;
+                int64 b = block.difficulty;
 
                 assert(b == 93_603_701_976_053);
             }

+ 0 - 10
tests/contract_testcases/substrate/builtins/block_06.dot

@@ -1,10 +0,0 @@
-strict digraph "tests/contract_testcases/substrate/builtins/block_06.sol" {
-	contract [label="contract bar\ntests/contract_testcases/substrate/builtins/block_06.sol:2:9-8:10"]
-	test [label="function test\ncontract: bar\ntests/contract_testcases/substrate/builtins/block_06.sol:3:13-35\nsignature test()\nvisibility public\nmutability nonpayable"]
-	diagnostic [label="found contract 'bar'\nlevel Debug\ntests/contract_testcases/substrate/builtins/block_06.sol:2:9-8:10"]
-	diagnostic_5 [label="builtin 'block.difficulty' does not exist\nlevel Error\ntests/contract_testcases/substrate/builtins/block_06.sol:4:27-32"]
-	contracts -> contract
-	contract -> test [label="function"]
-	diagnostics -> diagnostic [label="Debug"]
-	diagnostics -> diagnostic_5 [label="Error"]
-}

+ 0 - 8
tests/contract_testcases/substrate/builtins/block_06.sol

@@ -1,8 +0,0 @@
-
-        contract bar {
-            function test() public {
-                int64 b = block.difficulty;
-
-                assert(b == 93_603_701_976_053);
-            }
-        }

+ 0 - 12
tests/substrate.rs

@@ -77,7 +77,6 @@ enum SubstrateExternal {
     seal_weight_to_fee,
     seal_gas_left,
     seal_caller,
-    seal_tombstone_deposit,
     seal_deposit_event,
     seal_transfer,
 }
@@ -811,16 +810,6 @@ impl Externals for MockSubstrate {
 
                 Ok(None)
             }
-            Some(SubstrateExternal::seal_tombstone_deposit) => {
-                let dest_ptr: u32 = args.nth_checked(0)?;
-                let len_ptr: u32 = args.nth_checked(1)?;
-
-                let scratch = 93_603_701_976_053u128.to_le_bytes();
-
-                set_seal_value!("seal_tombstone_deposit", dest_ptr, len_ptr, &scratch);
-
-                Ok(None)
-            }
             Some(SubstrateExternal::seal_terminate) => {
                 let account_ptr: u32 = args.nth_checked(0)?;
                 let account_len: u32 = args.nth_checked(1)?;
@@ -928,7 +917,6 @@ impl ModuleImportResolver for MockSubstrate {
             "seal_weight_to_fee" => SubstrateExternal::seal_weight_to_fee,
             "seal_gas_left" => SubstrateExternal::seal_gas_left,
             "seal_caller" => SubstrateExternal::seal_caller,
-            "seal_tombstone_deposit" => SubstrateExternal::seal_tombstone_deposit,
             "seal_deposit_event" => SubstrateExternal::seal_deposit_event,
             "seal_transfer" => SubstrateExternal::seal_transfer,
             _ => {

+ 0 - 13
tests/substrate_tests/builtins.rs

@@ -321,19 +321,6 @@ fn block() {
 
     runtime.function("test", Vec::new());
 
-    let mut runtime = build_solidity(
-        r##"
-        contract bar {
-            function test() public {
-                uint128 b = block.tombstone_deposit;
-
-                assert(b == 93_603_701_976_053);
-            }
-        }"##,
-    );
-
-    runtime.function("test", Vec::new());
-
     let mut runtime = build_solidity(
         r##"
         contract bar {