From 602986962d0eb088139fad8e75265b9b7bd77546 Mon Sep 17 00:00:00 2001 From: Leigh McCulloch <351529+leighmcculloch@users.noreply.github.com> Date: Tue, 10 Sep 2024 08:28:47 +1000 Subject: [PATCH 1/8] add wasm auths contracts --- Cargo.lock | 14 + tests/auth/src/lib.rs | 138 ++++- ...est_with_real_contract_auth_decline.1.json | 191 +++---- ...ith_real_contract_wasm_auth_approve.1.json | 522 ++++++++++++++++++ tests/auth_approve/Cargo.toml | 18 + tests/auth_approve/src/lib.rs | 11 + tests/auth_decline/Cargo.toml | 18 + tests/auth_decline/src/lib.rs | 24 + 8 files changed, 831 insertions(+), 105 deletions(-) create mode 100644 tests/auth/test_snapshots/test_b/test_with_real_contract_wasm_auth_approve.1.json create mode 100644 tests/auth_approve/Cargo.toml create mode 100644 tests/auth_approve/src/lib.rs create mode 100644 tests/auth_decline/Cargo.toml create mode 100644 tests/auth_decline/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index 39bd2ba9b..fb803055a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1420,6 +1420,20 @@ dependencies = [ "soroban-sdk", ] +[[package]] +name = "test_auth_approve" +version = "21.6.0" +dependencies = [ + "soroban-sdk", +] + +[[package]] +name = "test_auth_decline" +version = "21.6.0" +dependencies = [ + "soroban-sdk", +] + [[package]] name = "test_contract_data" version = "21.6.0" diff --git a/tests/auth/src/lib.rs b/tests/auth/src/lib.rs index ffd7f3ae9..7186ecff6 100644 --- a/tests/auth/src/lib.rs +++ b/tests/auth/src/lib.rs @@ -403,7 +403,14 @@ mod test_b { let contract_b_id = e.register_contract(None, ContractB); let client = ContractBClient::new(&e, &contract_b_id); - let a = e.register_contract(None, auth_decline::Contract); + mod asdf { + soroban_sdk::contractimport!( + file = "../../target/wasm32-unknown-unknown/release/test_auth.wasm" + ); + } + + // let a = e.register_contract_wasm(None, asdf::WASM); + let a = e.register_contract(None, auth_approve::Contract); let a_xdr: ScAddress = (&a).try_into().unwrap(); let r = client @@ -482,4 +489,133 @@ mod test_b { } } } + + mod wasm { + use super::*; + + #[test] + fn test_with_real_contract_wasm_auth_approve() { + let e = Env::default(); + + let contract_a_id = e.register_contract(None, ContractA); + let contract_b_id = e.register_contract(None, ContractB); + let client = ContractBClient::new(&e, &contract_b_id); + + mod imported_auth_approve { + soroban_sdk::contractimport!( + file = "../../target/wasm32-unknown-unknown/release/test_auth_approve.wasm" + ); + } + + let a = e.register_contract_wasm(None, imported_auth_approve::WASM); + let a_xdr: ScAddress = (&a).try_into().unwrap(); + + let r = client + .set_auths(&[SorobanAuthorizationEntry { + credentials: SorobanCredentials::Address(SorobanAddressCredentials { + address: a_xdr.clone(), + nonce: 789, + signature_expiration_ledger: 150, + signature: ScVal::Void, + }), + root_invocation: SorobanAuthorizedInvocation { + function: SorobanAuthorizedFunction::ContractFn(InvokeContractArgs { + contract_address: contract_b_id.clone().try_into().unwrap(), + function_name: StringM::try_from("fn2").unwrap().into(), + args: std::vec![ScVal::I32(1), ScVal::I32(2),].try_into().unwrap(), + }), + sub_invocations: std::vec![SorobanAuthorizedInvocation { + function: SorobanAuthorizedFunction::ContractFn(InvokeContractArgs { + contract_address: contract_a_id.clone().try_into().unwrap(), + function_name: StringM::try_from("fn1").unwrap().into(), + args: std::vec![ScVal::Address(a_xdr.clone())].try_into().unwrap(), + },), + sub_invocations: Default::default() + }] + .try_into() + .unwrap(), + }, + }]) + .try_fn2(&a, &contract_a_id); + + assert_eq!(r, Ok(Ok(2))); + + assert_eq!( + e.auths(), + [( + a.clone(), + AuthorizedInvocation { + function: AuthorizedFunction::Contract(( + contract_b_id.clone(), + symbol_short!("fn2"), + (1, 2).into_val(&e), + )), + sub_invocations: std::vec![AuthorizedInvocation { + function: AuthorizedFunction::Contract(( + contract_a_id.clone(), + symbol_short!("fn1"), + (&a,).into_val(&e), + )), + sub_invocations: std::vec![] + }] + } + ),], + ); + } + + #[test] + fn test_with_real_contract_wasm_auth_decline() { + let e = Env::default(); + + let contract_a_id = e.register_contract(None, ContractA); + let contract_b_id = e.register_contract(None, ContractB); + let client = ContractBClient::new(&e, &contract_b_id); + + mod imported_auth_decline { + soroban_sdk::contractimport!( + file = "../../target/wasm32-unknown-unknown/release/test_auth_decline.wasm" + ); + } + + let a = e.register_contract_wasm(None, imported_auth_decline::WASM); + let a_xdr: ScAddress = (&a).try_into().unwrap(); + + let r = client + .set_auths(&[SorobanAuthorizationEntry { + credentials: SorobanCredentials::Address(SorobanAddressCredentials { + address: a_xdr.clone(), + nonce: 789, + signature_expiration_ledger: 150, + signature: ScVal::Void, + }), + root_invocation: SorobanAuthorizedInvocation { + function: SorobanAuthorizedFunction::ContractFn(InvokeContractArgs { + contract_address: contract_b_id.try_into().unwrap(), + function_name: StringM::try_from("fn2").unwrap().into(), + args: std::vec![ScVal::I32(1), ScVal::I32(2),].try_into().unwrap(), + }), + sub_invocations: std::vec![SorobanAuthorizedInvocation { + function: SorobanAuthorizedFunction::ContractFn(InvokeContractArgs { + contract_address: contract_a_id.clone().try_into().unwrap(), + function_name: StringM::try_from("fn1").unwrap().into(), + args: std::vec![ScVal::Address(a_xdr.clone())].try_into().unwrap(), + },), + sub_invocations: Default::default() + }] + .try_into() + .unwrap(), + }, + }]) + .try_fn2(&a, &contract_a_id); + + assert_eq!( + r, + Err(Ok(Error::from_scerror(ScError::Context( + ScErrorCode::InvalidAction + )))) + ); + + assert_eq!(e.auths(), []); + } + } } diff --git a/tests/auth/test_snapshots/test_b/test_with_real_contract_auth_decline.1.json b/tests/auth/test_snapshots/test_b/test_with_real_contract_auth_decline.1.json index 3df3cc2b3..09d63fde2 100644 --- a/tests/auth/test_snapshots/test_b/test_with_real_contract_auth_decline.1.json +++ b/tests/auth/test_snapshots/test_b/test_with_real_contract_auth_decline.1.json @@ -4,7 +4,43 @@ "nonce": 0 }, "auth": [ - [] + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "function_name": "fn2", + "args": [ + { + "i32": 1 + }, + { + "i32": 2 + } + ] + } + }, + "sub_invocations": [ + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "fn1", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + } + }, + "sub_invocations": [] + } + ] + } + ] + ] ], "ledger": { "protocol_version": 21, @@ -112,6 +148,39 @@ 4095 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 789 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 789 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 150 + ] + ], [ { "contract_code": { @@ -283,7 +352,7 @@ } } }, - "failed_call": true + "failed_call": false }, { "event": { @@ -300,40 +369,11 @@ "symbol": "__check_auth" } ], - "data": { - "error": { - "contract": 1 - } - } - } - } - }, - "failed_call": true - }, - { - "event": { - "ext": "v0", - "contract_id": "0000000000000000000000000000000000000000000000000000000000000003", - "type_": "diagnostic", - "body": { - "v0": { - "topics": [ - { - "symbol": "error" - }, - { - "error": { - "contract": 1 - } - } - ], - "data": { - "string": "escalating Ok(ScErrorType::Contract) frame-exit to Err" - } + "data": "void" } } }, - "failed_call": true + "failed_call": false }, { "event": { @@ -344,120 +384,63 @@ "v0": { "topics": [ { - "symbol": "error" + "symbol": "fn_call" }, { - "error": { - "auth": "invalid_action" - } - } - ], - "data": { - "vec": [ - { - "string": "failed account authentication with error" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" - }, - { - "error": { - "contract": 1 - } - } - ] - } - } - } - }, - "failed_call": true - }, - { - "event": { - "ext": "v0", - "contract_id": "0000000000000000000000000000000000000000000000000000000000000002", - "type_": "diagnostic", - "body": { - "v0": { - "topics": [ - { - "symbol": "error" + "bytes": "0000000000000000000000000000000000000000000000000000000000000001" }, { - "error": { - "auth": "invalid_action" - } + "symbol": "fn1" } ], "data": { - "string": "escalating error to panic" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" } } } }, - "failed_call": true + "failed_call": false }, { "event": { "ext": "v0", - "contract_id": "0000000000000000000000000000000000000000000000000000000000000002", + "contract_id": "0000000000000000000000000000000000000000000000000000000000000001", "type_": "diagnostic", "body": { "v0": { "topics": [ { - "symbol": "error" + "symbol": "fn_return" }, { - "error": { - "auth": "invalid_action" - } + "symbol": "fn1" } ], "data": { - "string": "caught error from function" + "u64": 2 } } } }, - "failed_call": true + "failed_call": false }, { "event": { "ext": "v0", - "contract_id": null, + "contract_id": "0000000000000000000000000000000000000000000000000000000000000002", "type_": "diagnostic", "body": { "v0": { "topics": [ { - "symbol": "error" + "symbol": "fn_return" }, { - "error": { - "auth": "invalid_action" - } + "symbol": "fn2" } ], "data": { - "vec": [ - { - "string": "contract try_call failed" - }, - { - "symbol": "fn2" - }, - { - "vec": [ - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" - } - ] - } - ] + "u64": 2 } } } diff --git a/tests/auth/test_snapshots/test_b/test_with_real_contract_wasm_auth_approve.1.json b/tests/auth/test_snapshots/test_b/test_with_real_contract_wasm_auth_approve.1.json new file mode 100644 index 000000000..9f2a18e69 --- /dev/null +++ b/tests/auth/test_snapshots/test_b/test_with_real_contract_wasm_auth_approve.1.json @@ -0,0 +1,522 @@ +{ + "generators": { + "address": 3, + "nonce": 0 + }, + "auth": [ + [ + [ + "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "function_name": "fn2", + "args": [ + { + "i32": 1 + }, + { + "i32": 2 + } + ] + } + }, + "sub_invocations": [ + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "fn1", + "args": [ + { + "address": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P" + } + ] + } + }, + "sub_invocations": [] + } + ] + } + ] + ] + ], + "ledger": { + "protocol_version": 21, + "sequence_number": 0, + "timestamp": 0, + "network_id": "0000000000000000000000000000000000000000000000000000000000000000", + "base_reserve": 0, + "min_persistent_entry_ttl": 4096, + "min_temp_entry_ttl": 16, + "max_entry_ttl": 6312000, + "ledger_entries": [ + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "11a0694e52ff75c8e5da5a0c88f227a8eab07aa6b0f10526afa4a86b053f1f44" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P", + "key": { + "ledger_key_nonce": { + "nonce": 789 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P", + "key": { + "ledger_key_nonce": { + "nonce": 789 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 150 + ] + ], + [ + { + "contract_code": { + "hash": "11a0694e52ff75c8e5da5a0c88f227a8eab07aa6b0f10526afa4a86b053f1f44" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": { + "v1": { + "ext": "v0", + "cost_inputs": { + "ext": "v0", + "n_instructions": 3, + "n_functions": 2, + "n_globals": 3, + "n_table_entries": 0, + "n_types": 2, + "n_data_segments": 0, + "n_elem_segments": 0, + "n_imports": 0, + "n_exports": 5, + "n_data_segment_bytes": 0 + } + } + }, + "hash": "11a0694e52ff75c8e5da5a0c88f227a8eab07aa6b0f10526afa4a86b053f1f44", + "code": "0061736d01000000010b0260037e7e7e017e600000030302000105030100100619037f01418080c0000b7f00418080c0000b7f00418080c0000b073805066d656d6f727902000c5f5f636865636b5f617574680000015f00010a5f5f646174615f656e6403010b5f5f686561705f6261736503020a0902040042020b02000b0083010e636f6e747261637473706563763000000000000000000000000c5f5f636865636b5f617574680000000300000000000000125f7369676e61747572655f7061796c6f6164000000000000000000000000000b5f7369676e6174757265730000000000000000000000000d5f617574685f636f6e746578740000000000000000000000001e11636f6e7472616374656e766d657461763000000000000000150000000000770e636f6e74726163746d65746176300000000000000005727376657200000000000006312e38312e3000000000000000000008727373646b7665720000003532312e362e3023663537643234353465353230616531316463396338643535646236313035353761323461353536652d6469727479000000" + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_code": { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + 4095 + ] + ] + ] + }, + "events": [ + { + "event": { + "ext": "v0", + "contract_id": null, + "type_": "diagnostic", + "body": { + "v0": { + "topics": [ + { + "symbol": "fn_call" + }, + { + "bytes": "0000000000000000000000000000000000000000000000000000000000000002" + }, + { + "symbol": "fn2" + } + ], + "data": { + "vec": [ + { + "address": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + ] + } + } + } + }, + "failed_call": false + }, + { + "event": { + "ext": "v0", + "contract_id": "0000000000000000000000000000000000000000000000000000000000000002", + "type_": "diagnostic", + "body": { + "v0": { + "topics": [ + { + "symbol": "fn_call" + }, + { + "bytes": "13731514dea3a91781adeba2075794a8fa060c6dec9b07a6c4bf627fd32bdf1f" + }, + { + "symbol": "__check_auth" + } + ], + "data": { + "vec": [ + { + "bytes": "eb9c712261ce18f8d113eb058d23edb6cb994750920cf52758d574c4ccfe134e" + }, + "void", + { + "vec": [ + { + "vec": [ + { + "symbol": "Contract" + }, + { + "map": [ + { + "key": { + "symbol": "args" + }, + "val": { + "vec": [ + { + "i32": 1 + }, + { + "i32": 2 + } + ] + } + }, + { + "key": { + "symbol": "contract" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "fn_name" + }, + "val": { + "symbol": "fn2" + } + } + ] + } + ] + }, + { + "vec": [ + { + "symbol": "Contract" + }, + { + "map": [ + { + "key": { + "symbol": "args" + }, + "val": { + "vec": [ + { + "address": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P" + } + ] + } + }, + { + "key": { + "symbol": "contract" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + }, + { + "key": { + "symbol": "fn_name" + }, + "val": { + "symbol": "fn1" + } + } + ] + } + ] + } + ] + } + ] + } + } + } + }, + "failed_call": false + }, + { + "event": { + "ext": "v0", + "contract_id": "13731514dea3a91781adeba2075794a8fa060c6dec9b07a6c4bf627fd32bdf1f", + "type_": "diagnostic", + "body": { + "v0": { + "topics": [ + { + "symbol": "fn_return" + }, + { + "symbol": "__check_auth" + } + ], + "data": "void" + } + } + }, + "failed_call": false + }, + { + "event": { + "ext": "v0", + "contract_id": "0000000000000000000000000000000000000000000000000000000000000002", + "type_": "diagnostic", + "body": { + "v0": { + "topics": [ + { + "symbol": "fn_call" + }, + { + "bytes": "0000000000000000000000000000000000000000000000000000000000000001" + }, + { + "symbol": "fn1" + } + ], + "data": { + "address": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P" + } + } + } + }, + "failed_call": false + }, + { + "event": { + "ext": "v0", + "contract_id": "0000000000000000000000000000000000000000000000000000000000000001", + "type_": "diagnostic", + "body": { + "v0": { + "topics": [ + { + "symbol": "fn_return" + }, + { + "symbol": "fn1" + } + ], + "data": { + "u64": 2 + } + } + } + }, + "failed_call": false + }, + { + "event": { + "ext": "v0", + "contract_id": "0000000000000000000000000000000000000000000000000000000000000002", + "type_": "diagnostic", + "body": { + "v0": { + "topics": [ + { + "symbol": "fn_return" + }, + { + "symbol": "fn2" + } + ], + "data": { + "u64": 2 + } + } + } + }, + "failed_call": false + } + ] +} \ No newline at end of file diff --git a/tests/auth_approve/Cargo.toml b/tests/auth_approve/Cargo.toml new file mode 100644 index 000000000..7ffa1c202 --- /dev/null +++ b/tests/auth_approve/Cargo.toml @@ -0,0 +1,18 @@ +[package] +name = "test_auth_approve" +version.workspace = true +authors = ["Stellar Development Foundation "] +license = "Apache-2.0" +edition = "2021" +publish = false +rust-version.workspace = true + +[lib] +crate-type = ["cdylib"] +doctest = false + +[dependencies] +soroban-sdk = {path = "../../soroban-sdk"} + +[dev-dependencies] +soroban-sdk = {path = "../../soroban-sdk", features = ["testutils"]} diff --git a/tests/auth_approve/src/lib.rs b/tests/auth_approve/src/lib.rs new file mode 100644 index 000000000..a85cc1d41 --- /dev/null +++ b/tests/auth_approve/src/lib.rs @@ -0,0 +1,11 @@ +#![no_std] +use soroban_sdk::{contract, contractimpl, Val}; + +#[contract] +pub struct Contract; + +#[contractimpl] +impl Contract { + #[allow(non_snake_case)] + pub fn __check_auth(_signature_payload: Val, _signatures: Val, _auth_context: Val) {} +} diff --git a/tests/auth_decline/Cargo.toml b/tests/auth_decline/Cargo.toml new file mode 100644 index 000000000..25eb727b6 --- /dev/null +++ b/tests/auth_decline/Cargo.toml @@ -0,0 +1,18 @@ +[package] +name = "test_auth_decline" +version.workspace = true +authors = ["Stellar Development Foundation "] +license = "Apache-2.0" +edition = "2021" +publish = false +rust-version.workspace = true + +[lib] +crate-type = ["cdylib"] +doctest = false + +[dependencies] +soroban-sdk = {path = "../../soroban-sdk"} + +[dev-dependencies] +soroban-sdk = {path = "../../soroban-sdk", features = ["testutils"]} diff --git a/tests/auth_decline/src/lib.rs b/tests/auth_decline/src/lib.rs new file mode 100644 index 000000000..1e688b959 --- /dev/null +++ b/tests/auth_decline/src/lib.rs @@ -0,0 +1,24 @@ +#![no_std] +use soroban_sdk::{contract, contracterror, contractimpl, Val}; + +#[contract] +pub struct Contract; + +#[contracterror] +#[derive(Copy, Clone, Debug, Eq, PartialEq, PartialOrd, Ord)] +#[repr(u32)] +pub enum Error { + Decline = 1, +} + +#[contractimpl] +impl Contract { + #[allow(non_snake_case)] + pub fn __check_auth( + _signature_payload: Val, + _signatures: Val, + _auth_context: Val, + ) -> Result<(), Error> { + Err(Error::Decline) + } +} From c0ad9f5e6e82f46c3ee13b63eb809c207d729a95 Mon Sep 17 00:00:00 2001 From: Leigh McCulloch <351529+leighmcculloch@users.noreply.github.com> Date: Tue, 10 Sep 2024 13:17:31 +1000 Subject: [PATCH 2/8] fix --- Cargo.lock | 21 +- Cargo.toml | 8 +- rust-toolchain.toml | 2 +- soroban-sdk-macros/src/derive_fn.rs | 17 +- tests/auth/Cargo.toml | 3 + ...ith_real_contract_wasm_auth_decline.1.json | 514 +++++++++++++++++ ...ith_real_contract_wasm_auth_approve.1.json | 522 ++++++++++++++++++ ...ith_real_contract_wasm_auth_decline.1.json | 514 +++++++++++++++++ 8 files changed, 1574 insertions(+), 27 deletions(-) create mode 100644 tests/auth/test_snapshots/test_b/test_with_real_contract_wasm_auth_decline.1.json create mode 100644 tests/auth/test_snapshots/test_b/wasm/test_with_real_contract_wasm_auth_approve.1.json create mode 100644 tests/auth/test_snapshots/test_b/wasm/test_with_real_contract_wasm_auth_decline.1.json diff --git a/Cargo.lock b/Cargo.lock index fb803055a..2847034c1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1106,8 +1106,6 @@ checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" [[package]] name = "soroban-builtin-sdk-macros" version = "21.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f57a68ef8777e28e274de0f3a88ad9a5a41d9a2eb461b4dd800b086f0e83b80" dependencies = [ "itertools", "proc-macro2", @@ -1118,8 +1116,6 @@ dependencies = [ [[package]] name = "soroban-env-common" version = "21.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fd1c89463835fe6da996318156d39f424b4f167c725ec692e5a7a2d4e694b3d" dependencies = [ "arbitrary", "crate-git-revision", @@ -1137,8 +1133,6 @@ dependencies = [ [[package]] name = "soroban-env-guest" version = "21.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bfb2536811045d5cd0c656a324cbe9ce4467eb734c7946b74410d90dea5d0ce" dependencies = [ "soroban-env-common", "static_assertions", @@ -1147,8 +1141,6 @@ dependencies = [ [[package]] name = "soroban-env-host" version = "21.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b7a32c28f281c423189f1298960194f0e0fc4eeb72378028171e556d8cd6160" dependencies = [ "backtrace", "curve25519-dalek", @@ -1180,8 +1172,6 @@ dependencies = [ [[package]] name = "soroban-env-macros" version = "21.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "242926fe5e0d922f12d3796cd7cd02dd824e5ef1caa088f45fce20b618309f64" dependencies = [ "itertools", "proc-macro2", @@ -1283,8 +1273,7 @@ dependencies = [ [[package]] name = "soroban-wasmi" version = "0.31.1-soroban.20.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "710403de32d0e0c35375518cb995d4fc056d0d48966f2e56ea471b8cb8fc9719" +source = "git+https://github.com/stellar/wasmi?rev=0ed3f3dee30dc41ebe21972399e0a73a41944aa0#0ed3f3dee30dc41ebe21972399e0a73a41944aa0" dependencies = [ "smallvec", "spin", @@ -1670,15 +1659,13 @@ checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" [[package]] name = "wasmi_arena" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "104a7f73be44570cac297b3035d76b169d6599637631cf37a1703326a0727073" +version = "0.4.0" +source = "git+https://github.com/stellar/wasmi?rev=0ed3f3dee30dc41ebe21972399e0a73a41944aa0#0ed3f3dee30dc41ebe21972399e0a73a41944aa0" [[package]] name = "wasmi_core" version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcf1a7db34bff95b85c261002720c00c3a6168256dcb93041d3fa2054d19856a" +source = "git+https://github.com/stellar/wasmi?rev=0ed3f3dee30dc41ebe21972399e0a73a41944aa0#0ed3f3dee30dc41ebe21972399e0a73a41944aa0" dependencies = [ "downcast-rs", "libm", diff --git a/Cargo.toml b/Cargo.toml index 8ff938800..c8514d34a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -48,10 +48,10 @@ features = ["curr"] # git = "https://github.com/stellar/rs-stellar-xdr" # rev = "d0138770652a615e3cd99447f2f2727658c17450" -#[patch."https://github.com/stellar/rs-soroban-env"] -#soroban-env-common = { path = "../rs-soroban-env/soroban-env-common" } -#soroban-env-guest = { path = "../rs-soroban-env/soroban-env-guest" } -#soroban-env-host = { path = "../rs-soroban-env/soroban-env-host/" } +[patch.crates-io] +soroban-env-common = { path = "../rs-soroban-env/soroban-env-common" } +soroban-env-guest = { path = "../rs-soroban-env/soroban-env-guest" } +soroban-env-host = { path = "../rs-soroban-env/soroban-env-host/" } #[patch."https://github.com/stellar/rs-stellar-xdr"] #stellar-xdr = { path = "../rs-stellar-xdr/" } diff --git a/rust-toolchain.toml b/rust-toolchain.toml index e340b7641..f3f78d75c 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,4 +1,4 @@ [toolchain] -channel = "stable" +channel = "nightly" targets = ["wasm32-unknown-unknown"] components = ["rustc", "cargo", "rustfmt", "clippy", "rust-src"] diff --git a/soroban-sdk-macros/src/derive_fn.rs b/soroban-sdk-macros/src/derive_fn.rs index 168d8b0fc..89cfa3074 100644 --- a/soroban-sdk-macros/src/derive_fn.rs +++ b/soroban-sdk-macros/src/derive_fn.rs @@ -50,7 +50,7 @@ pub fn derive_pub_fn( }); // Prepare the argument inputs. - let (wrap_args, wrap_calls): (Vec<_>, Vec<_>) = inputs + let (wrap_args, passthrough_calls, wrap_calls): (Vec<_>, Vec<_>, Vec<_>) = inputs .iter() .skip(if env_input.is_some() { 1 } else { 0 }) .enumerate() @@ -78,6 +78,7 @@ pub fn derive_pub_fn( colon_token: Colon::default(), ty: Box::new(Type::Verbatim(quote! { #crate_path::Val })), }); + let passthrough_call = quote! { #ident }; let call = quote! { <_ as #crate_path::unwrap::UnwrapOptimized>::unwrap_optimized( <_ as #crate_path::TryFromValForContractFn<#crate_path::Env, #crate_path::Val>>::try_from_val_for_contract_fn( @@ -86,11 +87,11 @@ pub fn derive_pub_fn( ) ) }; - (arg, call) + (arg, passthrough_call, call) } FnArg::Receiver(_) => { errors.push(Error::new(a.span(), "self argument not supported")); - (a.clone(), quote! {}) + (a.clone(), quote! {}, quote! {}) } }) .multiunzip(); @@ -132,8 +133,7 @@ pub fn derive_pub_fn( use super::*; #[deprecated(note = #deprecated_note)] - #[cfg_attr(target_family = "wasm", export_name = #wrap_export_name)] - pub extern fn invoke_raw(env: #crate_path::Env, #(#wrap_args),*) -> #crate_path::Val { + pub fn invoke_raw(env: #crate_path::Env, #(#wrap_args),*) -> #crate_path::Val { #use_trait; <_ as #crate_path::IntoVal<#crate_path::Env, #crate_path::Val>>::into_val( #[allow(deprecated)] @@ -154,6 +154,13 @@ pub fn derive_pub_fn( invoke_raw(env, #(#slice_args),*) } + #[deprecated(note = #deprecated_note)] + #[cfg_attr(target_family = "wasm", export_name = #wrap_export_name)] + pub extern fn invoke_raw_extern(env: #crate_path::Env, #(#wrap_args),*) -> #crate_path::Val { + #[allow(deprecated)] + invoke_raw(env, #(#passthrough_calls),*) + } + use super::*; } }) diff --git a/tests/auth/Cargo.toml b/tests/auth/Cargo.toml index 9b8b29272..2571c4b12 100644 --- a/tests/auth/Cargo.toml +++ b/tests/auth/Cargo.toml @@ -11,6 +11,9 @@ rust-version.workspace = true crate-type = ["cdylib"] doctest = false +[features] +testutils = ["soroban-sdk/testutils"] + [dependencies] soroban-sdk = {path = "../../soroban-sdk"} diff --git a/tests/auth/test_snapshots/test_b/test_with_real_contract_wasm_auth_decline.1.json b/tests/auth/test_snapshots/test_b/test_with_real_contract_wasm_auth_decline.1.json new file mode 100644 index 000000000..ac9a40f40 --- /dev/null +++ b/tests/auth/test_snapshots/test_b/test_with_real_contract_wasm_auth_decline.1.json @@ -0,0 +1,514 @@ +{ + "generators": { + "address": 3, + "nonce": 0 + }, + "auth": [ + [] + ], + "ledger": { + "protocol_version": 21, + "sequence_number": 0, + "timestamp": 0, + "network_id": "0000000000000000000000000000000000000000000000000000000000000000", + "base_reserve": 0, + "min_persistent_entry_ttl": 4096, + "min_temp_entry_ttl": 16, + "max_entry_ttl": 6312000, + "ledger_entries": [ + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "5a9f62c78ca35c1fb193d0c7c214c719f606ddc481890ae3d8b69945dffc28e0" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_code": { + "hash": "5a9f62c78ca35c1fb193d0c7c214c719f606ddc481890ae3d8b69945dffc28e0" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": { + "v1": { + "ext": "v0", + "cost_inputs": { + "ext": "v0", + "n_instructions": 3, + "n_functions": 2, + "n_globals": 3, + "n_table_entries": 0, + "n_types": 2, + "n_data_segments": 0, + "n_elem_segments": 0, + "n_imports": 0, + "n_exports": 5, + "n_data_segment_bytes": 0 + } + } + }, + "hash": "5a9f62c78ca35c1fb193d0c7c214c719f606ddc481890ae3d8b69945dffc28e0", + "code": "0061736d01000000010b0260037e7e7e017e600000030302000105030100100619037f01418080c0000b7f00418080c0000b7f00418080c0000b073805066d656d6f727902000c5f5f636865636b5f617574680000015f00010a5f5f646174615f656e6403010b5f5f686561705f6261736503020a0d0208004283808080100b02000b00c3010e636f6e7472616374737065637630000000040000000000000000000000054572726f720000000000000100000000000000074465636c696e65000000000100000000000000000000000c5f5f636865636b5f617574680000000300000000000000125f7369676e61747572655f7061796c6f6164000000000000000000000000000b5f7369676e6174757265730000000000000000000000000d5f617574685f636f6e746578740000000000000000000001000003e9000003ed0000000000000003001e11636f6e7472616374656e766d657461763000000000000000150000000000770e636f6e74726163746d65746176300000000000000005727376657200000000000006312e38312e3000000000000000000008727373646b7665720000003532312e362e3023663537643234353465353230616531316463396338643535646236313035353761323461353536652d6469727479000000" + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_code": { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + 4095 + ] + ] + ] + }, + "events": [ + { + "event": { + "ext": "v0", + "contract_id": null, + "type_": "diagnostic", + "body": { + "v0": { + "topics": [ + { + "symbol": "fn_call" + }, + { + "bytes": "0000000000000000000000000000000000000000000000000000000000000002" + }, + { + "symbol": "fn2" + } + ], + "data": { + "vec": [ + { + "address": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + ] + } + } + } + }, + "failed_call": false + }, + { + "event": { + "ext": "v0", + "contract_id": "0000000000000000000000000000000000000000000000000000000000000002", + "type_": "diagnostic", + "body": { + "v0": { + "topics": [ + { + "symbol": "fn_call" + }, + { + "bytes": "13731514dea3a91781adeba2075794a8fa060c6dec9b07a6c4bf627fd32bdf1f" + }, + { + "symbol": "__check_auth" + } + ], + "data": { + "vec": [ + { + "bytes": "eb9c712261ce18f8d113eb058d23edb6cb994750920cf52758d574c4ccfe134e" + }, + "void", + { + "vec": [ + { + "vec": [ + { + "symbol": "Contract" + }, + { + "map": [ + { + "key": { + "symbol": "args" + }, + "val": { + "vec": [ + { + "i32": 1 + }, + { + "i32": 2 + } + ] + } + }, + { + "key": { + "symbol": "contract" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "fn_name" + }, + "val": { + "symbol": "fn2" + } + } + ] + } + ] + }, + { + "vec": [ + { + "symbol": "Contract" + }, + { + "map": [ + { + "key": { + "symbol": "args" + }, + "val": { + "vec": [ + { + "address": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P" + } + ] + } + }, + { + "key": { + "symbol": "contract" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + }, + { + "key": { + "symbol": "fn_name" + }, + "val": { + "symbol": "fn1" + } + } + ] + } + ] + } + ] + } + ] + } + } + } + }, + "failed_call": true + }, + { + "event": { + "ext": "v0", + "contract_id": "13731514dea3a91781adeba2075794a8fa060c6dec9b07a6c4bf627fd32bdf1f", + "type_": "diagnostic", + "body": { + "v0": { + "topics": [ + { + "symbol": "error" + }, + { + "error": { + "contract": 1 + } + } + ], + "data": { + "string": "escalating Ok(ScErrorType::Contract) frame-exit to Err" + } + } + } + }, + "failed_call": true + }, + { + "event": { + "ext": "v0", + "contract_id": "0000000000000000000000000000000000000000000000000000000000000002", + "type_": "diagnostic", + "body": { + "v0": { + "topics": [ + { + "symbol": "error" + }, + { + "error": { + "auth": "invalid_action" + } + } + ], + "data": { + "vec": [ + { + "string": "failed account authentication with error" + }, + { + "address": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P" + }, + { + "error": { + "contract": 1 + } + } + ] + } + } + } + }, + "failed_call": true + }, + { + "event": { + "ext": "v0", + "contract_id": "0000000000000000000000000000000000000000000000000000000000000002", + "type_": "diagnostic", + "body": { + "v0": { + "topics": [ + { + "symbol": "error" + }, + { + "error": { + "auth": "invalid_action" + } + } + ], + "data": { + "string": "escalating error to panic" + } + } + } + }, + "failed_call": true + }, + { + "event": { + "ext": "v0", + "contract_id": "0000000000000000000000000000000000000000000000000000000000000002", + "type_": "diagnostic", + "body": { + "v0": { + "topics": [ + { + "symbol": "error" + }, + { + "error": { + "auth": "invalid_action" + } + } + ], + "data": { + "string": "caught error from function" + } + } + } + }, + "failed_call": true + }, + { + "event": { + "ext": "v0", + "contract_id": null, + "type_": "diagnostic", + "body": { + "v0": { + "topics": [ + { + "symbol": "error" + }, + { + "error": { + "auth": "invalid_action" + } + } + ], + "data": { + "vec": [ + { + "string": "contract try_call failed" + }, + { + "symbol": "fn2" + }, + { + "vec": [ + { + "address": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + ] + } + ] + } + } + } + }, + "failed_call": false + } + ] +} \ No newline at end of file diff --git a/tests/auth/test_snapshots/test_b/wasm/test_with_real_contract_wasm_auth_approve.1.json b/tests/auth/test_snapshots/test_b/wasm/test_with_real_contract_wasm_auth_approve.1.json new file mode 100644 index 000000000..ce6ca9a35 --- /dev/null +++ b/tests/auth/test_snapshots/test_b/wasm/test_with_real_contract_wasm_auth_approve.1.json @@ -0,0 +1,522 @@ +{ + "generators": { + "address": 3, + "nonce": 0 + }, + "auth": [ + [ + [ + "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "function_name": "fn2", + "args": [ + { + "i32": 1 + }, + { + "i32": 2 + } + ] + } + }, + "sub_invocations": [ + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "fn1", + "args": [ + { + "address": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P" + } + ] + } + }, + "sub_invocations": [] + } + ] + } + ] + ] + ], + "ledger": { + "protocol_version": 21, + "sequence_number": 0, + "timestamp": 0, + "network_id": "0000000000000000000000000000000000000000000000000000000000000000", + "base_reserve": 0, + "min_persistent_entry_ttl": 4096, + "min_temp_entry_ttl": 16, + "max_entry_ttl": 6312000, + "ledger_entries": [ + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "a5e80350f39fe69d87d3f47c887ce29c058589bc026c42589b1607e276e6b442" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P", + "key": { + "ledger_key_nonce": { + "nonce": 789 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P", + "key": { + "ledger_key_nonce": { + "nonce": 789 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 150 + ] + ], + [ + { + "contract_code": { + "hash": "a5e80350f39fe69d87d3f47c887ce29c058589bc026c42589b1607e276e6b442" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": { + "v1": { + "ext": "v0", + "cost_inputs": { + "ext": "v0", + "n_instructions": 3, + "n_functions": 2, + "n_globals": 3, + "n_table_entries": 0, + "n_types": 2, + "n_data_segments": 0, + "n_elem_segments": 0, + "n_imports": 0, + "n_exports": 5, + "n_data_segment_bytes": 0 + } + } + }, + "hash": "a5e80350f39fe69d87d3f47c887ce29c058589bc026c42589b1607e276e6b442", + "code": "0061736d01000000010b0260037e7e7e017e600000030302000105030100100619037f01418080c0000b7f00418080c0000b7f00418080c0000b073805066d656d6f727902000c5f5f636865636b5f617574680000015f00010a5f5f646174615f656e6403010b5f5f686561705f6261736503020a0902040042020b02000b0083010e636f6e747261637473706563763000000000000000000000000c5f5f636865636b5f617574680000000300000000000000125f7369676e61747572655f7061796c6f6164000000000000000000000000000b5f7369676e6174757265730000000000000000000000000d5f617574685f636f6e746578740000000000000000000000001e11636f6e7472616374656e766d657461763000000000000000150000000000770e636f6e74726163746d65746176300000000000000005727376657200000000000006312e38312e3000000000000000000008727373646b7665720000003532312e362e3023646362346632343731663135666232326664316131303436366537646465386636383633623162342d6469727479000000" + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_code": { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + 4095 + ] + ] + ] + }, + "events": [ + { + "event": { + "ext": "v0", + "contract_id": null, + "type_": "diagnostic", + "body": { + "v0": { + "topics": [ + { + "symbol": "fn_call" + }, + { + "bytes": "0000000000000000000000000000000000000000000000000000000000000002" + }, + { + "symbol": "fn2" + } + ], + "data": { + "vec": [ + { + "address": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + ] + } + } + } + }, + "failed_call": false + }, + { + "event": { + "ext": "v0", + "contract_id": "0000000000000000000000000000000000000000000000000000000000000002", + "type_": "diagnostic", + "body": { + "v0": { + "topics": [ + { + "symbol": "fn_call" + }, + { + "bytes": "13731514dea3a91781adeba2075794a8fa060c6dec9b07a6c4bf627fd32bdf1f" + }, + { + "symbol": "__check_auth" + } + ], + "data": { + "vec": [ + { + "bytes": "eb9c712261ce18f8d113eb058d23edb6cb994750920cf52758d574c4ccfe134e" + }, + "void", + { + "vec": [ + { + "vec": [ + { + "symbol": "Contract" + }, + { + "map": [ + { + "key": { + "symbol": "args" + }, + "val": { + "vec": [ + { + "i32": 1 + }, + { + "i32": 2 + } + ] + } + }, + { + "key": { + "symbol": "contract" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "fn_name" + }, + "val": { + "symbol": "fn2" + } + } + ] + } + ] + }, + { + "vec": [ + { + "symbol": "Contract" + }, + { + "map": [ + { + "key": { + "symbol": "args" + }, + "val": { + "vec": [ + { + "address": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P" + } + ] + } + }, + { + "key": { + "symbol": "contract" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + }, + { + "key": { + "symbol": "fn_name" + }, + "val": { + "symbol": "fn1" + } + } + ] + } + ] + } + ] + } + ] + } + } + } + }, + "failed_call": false + }, + { + "event": { + "ext": "v0", + "contract_id": "13731514dea3a91781adeba2075794a8fa060c6dec9b07a6c4bf627fd32bdf1f", + "type_": "diagnostic", + "body": { + "v0": { + "topics": [ + { + "symbol": "fn_return" + }, + { + "symbol": "__check_auth" + } + ], + "data": "void" + } + } + }, + "failed_call": false + }, + { + "event": { + "ext": "v0", + "contract_id": "0000000000000000000000000000000000000000000000000000000000000002", + "type_": "diagnostic", + "body": { + "v0": { + "topics": [ + { + "symbol": "fn_call" + }, + { + "bytes": "0000000000000000000000000000000000000000000000000000000000000001" + }, + { + "symbol": "fn1" + } + ], + "data": { + "address": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P" + } + } + } + }, + "failed_call": false + }, + { + "event": { + "ext": "v0", + "contract_id": "0000000000000000000000000000000000000000000000000000000000000001", + "type_": "diagnostic", + "body": { + "v0": { + "topics": [ + { + "symbol": "fn_return" + }, + { + "symbol": "fn1" + } + ], + "data": { + "u64": 2 + } + } + } + }, + "failed_call": false + }, + { + "event": { + "ext": "v0", + "contract_id": "0000000000000000000000000000000000000000000000000000000000000002", + "type_": "diagnostic", + "body": { + "v0": { + "topics": [ + { + "symbol": "fn_return" + }, + { + "symbol": "fn2" + } + ], + "data": { + "u64": 2 + } + } + } + }, + "failed_call": false + } + ] +} \ No newline at end of file diff --git a/tests/auth/test_snapshots/test_b/wasm/test_with_real_contract_wasm_auth_decline.1.json b/tests/auth/test_snapshots/test_b/wasm/test_with_real_contract_wasm_auth_decline.1.json new file mode 100644 index 000000000..98bf557c9 --- /dev/null +++ b/tests/auth/test_snapshots/test_b/wasm/test_with_real_contract_wasm_auth_decline.1.json @@ -0,0 +1,514 @@ +{ + "generators": { + "address": 3, + "nonce": 0 + }, + "auth": [ + [] + ], + "ledger": { + "protocol_version": 21, + "sequence_number": 0, + "timestamp": 0, + "network_id": "0000000000000000000000000000000000000000000000000000000000000000", + "base_reserve": 0, + "min_persistent_entry_ttl": 4096, + "min_temp_entry_ttl": 16, + "max_entry_ttl": 6312000, + "ledger_entries": [ + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "90f6ec1c3bbd8b2c6430bd5412c7b9813853c7bc20b9e112a7603946f469a479" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_code": { + "hash": "90f6ec1c3bbd8b2c6430bd5412c7b9813853c7bc20b9e112a7603946f469a479" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": { + "v1": { + "ext": "v0", + "cost_inputs": { + "ext": "v0", + "n_instructions": 3, + "n_functions": 2, + "n_globals": 3, + "n_table_entries": 0, + "n_types": 2, + "n_data_segments": 0, + "n_elem_segments": 0, + "n_imports": 0, + "n_exports": 5, + "n_data_segment_bytes": 0 + } + } + }, + "hash": "90f6ec1c3bbd8b2c6430bd5412c7b9813853c7bc20b9e112a7603946f469a479", + "code": "0061736d01000000010b0260037e7e7e017e600000030302000105030100100619037f01418080c0000b7f00418080c0000b7f00418080c0000b073805066d656d6f727902000c5f5f636865636b5f617574680000015f00010a5f5f646174615f656e6403010b5f5f686561705f6261736503020a0d0208004283808080100b02000b00c3010e636f6e7472616374737065637630000000040000000000000000000000054572726f720000000000000100000000000000074465636c696e65000000000100000000000000000000000c5f5f636865636b5f617574680000000300000000000000125f7369676e61747572655f7061796c6f6164000000000000000000000000000b5f7369676e6174757265730000000000000000000000000d5f617574685f636f6e746578740000000000000000000001000003e9000003ed0000000000000003001e11636f6e7472616374656e766d657461763000000000000000150000000000770e636f6e74726163746d65746176300000000000000005727376657200000000000006312e38312e3000000000000000000008727373646b7665720000003532312e362e3023646362346632343731663135666232326664316131303436366537646465386636383633623162342d6469727479000000" + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_code": { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + 4095 + ] + ] + ] + }, + "events": [ + { + "event": { + "ext": "v0", + "contract_id": null, + "type_": "diagnostic", + "body": { + "v0": { + "topics": [ + { + "symbol": "fn_call" + }, + { + "bytes": "0000000000000000000000000000000000000000000000000000000000000002" + }, + { + "symbol": "fn2" + } + ], + "data": { + "vec": [ + { + "address": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + ] + } + } + } + }, + "failed_call": false + }, + { + "event": { + "ext": "v0", + "contract_id": "0000000000000000000000000000000000000000000000000000000000000002", + "type_": "diagnostic", + "body": { + "v0": { + "topics": [ + { + "symbol": "fn_call" + }, + { + "bytes": "13731514dea3a91781adeba2075794a8fa060c6dec9b07a6c4bf627fd32bdf1f" + }, + { + "symbol": "__check_auth" + } + ], + "data": { + "vec": [ + { + "bytes": "eb9c712261ce18f8d113eb058d23edb6cb994750920cf52758d574c4ccfe134e" + }, + "void", + { + "vec": [ + { + "vec": [ + { + "symbol": "Contract" + }, + { + "map": [ + { + "key": { + "symbol": "args" + }, + "val": { + "vec": [ + { + "i32": 1 + }, + { + "i32": 2 + } + ] + } + }, + { + "key": { + "symbol": "contract" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "fn_name" + }, + "val": { + "symbol": "fn2" + } + } + ] + } + ] + }, + { + "vec": [ + { + "symbol": "Contract" + }, + { + "map": [ + { + "key": { + "symbol": "args" + }, + "val": { + "vec": [ + { + "address": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P" + } + ] + } + }, + { + "key": { + "symbol": "contract" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + }, + { + "key": { + "symbol": "fn_name" + }, + "val": { + "symbol": "fn1" + } + } + ] + } + ] + } + ] + } + ] + } + } + } + }, + "failed_call": true + }, + { + "event": { + "ext": "v0", + "contract_id": "13731514dea3a91781adeba2075794a8fa060c6dec9b07a6c4bf627fd32bdf1f", + "type_": "diagnostic", + "body": { + "v0": { + "topics": [ + { + "symbol": "error" + }, + { + "error": { + "contract": 1 + } + } + ], + "data": { + "string": "escalating Ok(ScErrorType::Contract) frame-exit to Err" + } + } + } + }, + "failed_call": true + }, + { + "event": { + "ext": "v0", + "contract_id": "0000000000000000000000000000000000000000000000000000000000000002", + "type_": "diagnostic", + "body": { + "v0": { + "topics": [ + { + "symbol": "error" + }, + { + "error": { + "auth": "invalid_action" + } + } + ], + "data": { + "vec": [ + { + "string": "failed account authentication with error" + }, + { + "address": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P" + }, + { + "error": { + "contract": 1 + } + } + ] + } + } + } + }, + "failed_call": true + }, + { + "event": { + "ext": "v0", + "contract_id": "0000000000000000000000000000000000000000000000000000000000000002", + "type_": "diagnostic", + "body": { + "v0": { + "topics": [ + { + "symbol": "error" + }, + { + "error": { + "auth": "invalid_action" + } + } + ], + "data": { + "string": "escalating error to panic" + } + } + } + }, + "failed_call": true + }, + { + "event": { + "ext": "v0", + "contract_id": "0000000000000000000000000000000000000000000000000000000000000002", + "type_": "diagnostic", + "body": { + "v0": { + "topics": [ + { + "symbol": "error" + }, + { + "error": { + "auth": "invalid_action" + } + } + ], + "data": { + "string": "caught error from function" + } + } + } + }, + "failed_call": true + }, + { + "event": { + "ext": "v0", + "contract_id": null, + "type_": "diagnostic", + "body": { + "v0": { + "topics": [ + { + "symbol": "error" + }, + { + "error": { + "auth": "invalid_action" + } + } + ], + "data": { + "vec": [ + { + "string": "contract try_call failed" + }, + { + "symbol": "fn2" + }, + { + "vec": [ + { + "address": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + ] + } + ] + } + } + } + }, + "failed_call": false + } + ] +} \ No newline at end of file From 4eefe0390005f3b8c08d322f168e454849f1fb62 Mon Sep 17 00:00:00 2001 From: Leigh McCulloch <351529+leighmcculloch@users.noreply.github.com> Date: Tue, 10 Sep 2024 13:23:35 +1000 Subject: [PATCH 3/8] undo hacks --- Cargo.lock | 21 +- Cargo.toml | 8 +- rust-toolchain.toml | 2 +- tests/auth/Cargo.toml | 3 - tests/auth/src/lib.rs | 9 +- ...est_with_real_contract_auth_decline.1.json | 191 ++++++++++-------- 6 files changed, 127 insertions(+), 107 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2847034c1..fb803055a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1106,6 +1106,8 @@ checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" [[package]] name = "soroban-builtin-sdk-macros" version = "21.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f57a68ef8777e28e274de0f3a88ad9a5a41d9a2eb461b4dd800b086f0e83b80" dependencies = [ "itertools", "proc-macro2", @@ -1116,6 +1118,8 @@ dependencies = [ [[package]] name = "soroban-env-common" version = "21.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd1c89463835fe6da996318156d39f424b4f167c725ec692e5a7a2d4e694b3d" dependencies = [ "arbitrary", "crate-git-revision", @@ -1133,6 +1137,8 @@ dependencies = [ [[package]] name = "soroban-env-guest" version = "21.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bfb2536811045d5cd0c656a324cbe9ce4467eb734c7946b74410d90dea5d0ce" dependencies = [ "soroban-env-common", "static_assertions", @@ -1141,6 +1147,8 @@ dependencies = [ [[package]] name = "soroban-env-host" version = "21.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b7a32c28f281c423189f1298960194f0e0fc4eeb72378028171e556d8cd6160" dependencies = [ "backtrace", "curve25519-dalek", @@ -1172,6 +1180,8 @@ dependencies = [ [[package]] name = "soroban-env-macros" version = "21.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "242926fe5e0d922f12d3796cd7cd02dd824e5ef1caa088f45fce20b618309f64" dependencies = [ "itertools", "proc-macro2", @@ -1273,7 +1283,8 @@ dependencies = [ [[package]] name = "soroban-wasmi" version = "0.31.1-soroban.20.0.1" -source = "git+https://github.com/stellar/wasmi?rev=0ed3f3dee30dc41ebe21972399e0a73a41944aa0#0ed3f3dee30dc41ebe21972399e0a73a41944aa0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "710403de32d0e0c35375518cb995d4fc056d0d48966f2e56ea471b8cb8fc9719" dependencies = [ "smallvec", "spin", @@ -1659,13 +1670,15 @@ checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" [[package]] name = "wasmi_arena" -version = "0.4.0" -source = "git+https://github.com/stellar/wasmi?rev=0ed3f3dee30dc41ebe21972399e0a73a41944aa0#0ed3f3dee30dc41ebe21972399e0a73a41944aa0" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "104a7f73be44570cac297b3035d76b169d6599637631cf37a1703326a0727073" [[package]] name = "wasmi_core" version = "0.13.0" -source = "git+https://github.com/stellar/wasmi?rev=0ed3f3dee30dc41ebe21972399e0a73a41944aa0#0ed3f3dee30dc41ebe21972399e0a73a41944aa0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf1a7db34bff95b85c261002720c00c3a6168256dcb93041d3fa2054d19856a" dependencies = [ "downcast-rs", "libm", diff --git a/Cargo.toml b/Cargo.toml index c8514d34a..8ff938800 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -48,10 +48,10 @@ features = ["curr"] # git = "https://github.com/stellar/rs-stellar-xdr" # rev = "d0138770652a615e3cd99447f2f2727658c17450" -[patch.crates-io] -soroban-env-common = { path = "../rs-soroban-env/soroban-env-common" } -soroban-env-guest = { path = "../rs-soroban-env/soroban-env-guest" } -soroban-env-host = { path = "../rs-soroban-env/soroban-env-host/" } +#[patch."https://github.com/stellar/rs-soroban-env"] +#soroban-env-common = { path = "../rs-soroban-env/soroban-env-common" } +#soroban-env-guest = { path = "../rs-soroban-env/soroban-env-guest" } +#soroban-env-host = { path = "../rs-soroban-env/soroban-env-host/" } #[patch."https://github.com/stellar/rs-stellar-xdr"] #stellar-xdr = { path = "../rs-stellar-xdr/" } diff --git a/rust-toolchain.toml b/rust-toolchain.toml index f3f78d75c..e340b7641 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,4 +1,4 @@ [toolchain] -channel = "nightly" +channel = "stable" targets = ["wasm32-unknown-unknown"] components = ["rustc", "cargo", "rustfmt", "clippy", "rust-src"] diff --git a/tests/auth/Cargo.toml b/tests/auth/Cargo.toml index 2571c4b12..9b8b29272 100644 --- a/tests/auth/Cargo.toml +++ b/tests/auth/Cargo.toml @@ -11,9 +11,6 @@ rust-version.workspace = true crate-type = ["cdylib"] doctest = false -[features] -testutils = ["soroban-sdk/testutils"] - [dependencies] soroban-sdk = {path = "../../soroban-sdk"} diff --git a/tests/auth/src/lib.rs b/tests/auth/src/lib.rs index 7186ecff6..6caf81c34 100644 --- a/tests/auth/src/lib.rs +++ b/tests/auth/src/lib.rs @@ -403,14 +403,7 @@ mod test_b { let contract_b_id = e.register_contract(None, ContractB); let client = ContractBClient::new(&e, &contract_b_id); - mod asdf { - soroban_sdk::contractimport!( - file = "../../target/wasm32-unknown-unknown/release/test_auth.wasm" - ); - } - - // let a = e.register_contract_wasm(None, asdf::WASM); - let a = e.register_contract(None, auth_approve::Contract); + let a = e.register_contract(None, auth_decline::Contract); let a_xdr: ScAddress = (&a).try_into().unwrap(); let r = client diff --git a/tests/auth/test_snapshots/test_b/test_with_real_contract_auth_decline.1.json b/tests/auth/test_snapshots/test_b/test_with_real_contract_auth_decline.1.json index 09d63fde2..3df3cc2b3 100644 --- a/tests/auth/test_snapshots/test_b/test_with_real_contract_auth_decline.1.json +++ b/tests/auth/test_snapshots/test_b/test_with_real_contract_auth_decline.1.json @@ -4,43 +4,7 @@ "nonce": 0 }, "auth": [ - [ - [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", - { - "function": { - "contract_fn": { - "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", - "function_name": "fn2", - "args": [ - { - "i32": 1 - }, - { - "i32": 2 - } - ] - } - }, - "sub_invocations": [ - { - "function": { - "contract_fn": { - "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "function_name": "fn1", - "args": [ - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" - } - ] - } - }, - "sub_invocations": [] - } - ] - } - ] - ] + [] ], "ledger": { "protocol_version": 21, @@ -148,39 +112,6 @@ 4095 ] ], - [ - { - "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", - "key": { - "ledger_key_nonce": { - "nonce": 789 - } - }, - "durability": "temporary" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", - "key": { - "ledger_key_nonce": { - "nonce": 789 - } - }, - "durability": "temporary", - "val": "void" - } - }, - "ext": "v0" - }, - 150 - ] - ], [ { "contract_code": { @@ -352,7 +283,7 @@ } } }, - "failed_call": false + "failed_call": true }, { "event": { @@ -369,60 +300,102 @@ "symbol": "__check_auth" } ], - "data": "void" + "data": { + "error": { + "contract": 1 + } + } } } }, - "failed_call": false + "failed_call": true }, { "event": { "ext": "v0", - "contract_id": "0000000000000000000000000000000000000000000000000000000000000002", + "contract_id": "0000000000000000000000000000000000000000000000000000000000000003", "type_": "diagnostic", "body": { "v0": { "topics": [ { - "symbol": "fn_call" + "symbol": "error" }, { - "bytes": "0000000000000000000000000000000000000000000000000000000000000001" + "error": { + "contract": 1 + } + } + ], + "data": { + "string": "escalating Ok(ScErrorType::Contract) frame-exit to Err" + } + } + } + }, + "failed_call": true + }, + { + "event": { + "ext": "v0", + "contract_id": "0000000000000000000000000000000000000000000000000000000000000002", + "type_": "diagnostic", + "body": { + "v0": { + "topics": [ + { + "symbol": "error" }, { - "symbol": "fn1" + "error": { + "auth": "invalid_action" + } } ], "data": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "vec": [ + { + "string": "failed account authentication with error" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "error": { + "contract": 1 + } + } + ] } } } }, - "failed_call": false + "failed_call": true }, { "event": { "ext": "v0", - "contract_id": "0000000000000000000000000000000000000000000000000000000000000001", + "contract_id": "0000000000000000000000000000000000000000000000000000000000000002", "type_": "diagnostic", "body": { "v0": { "topics": [ { - "symbol": "fn_return" + "symbol": "error" }, { - "symbol": "fn1" + "error": { + "auth": "invalid_action" + } } ], "data": { - "u64": 2 + "string": "escalating error to panic" } } } }, - "failed_call": false + "failed_call": true }, { "event": { @@ -433,14 +406,58 @@ "v0": { "topics": [ { - "symbol": "fn_return" + "symbol": "error" }, { - "symbol": "fn2" + "error": { + "auth": "invalid_action" + } } ], "data": { - "u64": 2 + "string": "caught error from function" + } + } + } + }, + "failed_call": true + }, + { + "event": { + "ext": "v0", + "contract_id": null, + "type_": "diagnostic", + "body": { + "v0": { + "topics": [ + { + "symbol": "error" + }, + { + "error": { + "auth": "invalid_action" + } + } + ], + "data": { + "vec": [ + { + "string": "contract try_call failed" + }, + { + "symbol": "fn2" + }, + { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + ] + } + ] } } } From c4eac5bd6f645003e4d55d3efe372e3632bdf30b Mon Sep 17 00:00:00 2001 From: Leigh McCulloch <351529+leighmcculloch@users.noreply.github.com> Date: Tue, 10 Sep 2024 13:58:25 +1000 Subject: [PATCH 4/8] update semver-check to work with rust 1.81 --- .github/workflows/rust.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 3b524f9bd..ebde4e671 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -57,10 +57,10 @@ jobs: steps: - uses: actions/checkout@v3 - run: rustup update - - uses: stellar/binaries@v24 + - uses: stellar/binaries@v30 with: name: cargo-semver-checks - version: 0.32.0 + version: 0.35.0 - run: cargo semver-checks build-and-test: From 0574c05d6ee7611637cdb98fc0623331a22d497c Mon Sep 17 00:00:00 2001 From: Leigh McCulloch <351529+leighmcculloch@users.noreply.github.com> Date: Tue, 10 Sep 2024 14:01:07 +1000 Subject: [PATCH 5/8] fix --- .../wasm/test_with_real_contract_wasm_auth_approve.1.json | 8 ++++---- .../wasm/test_with_real_contract_wasm_auth_decline.1.json | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/tests/auth/test_snapshots/test_b/wasm/test_with_real_contract_wasm_auth_approve.1.json b/tests/auth/test_snapshots/test_b/wasm/test_with_real_contract_wasm_auth_approve.1.json index ce6ca9a35..0a13e3e59 100644 --- a/tests/auth/test_snapshots/test_b/wasm/test_with_real_contract_wasm_auth_approve.1.json +++ b/tests/auth/test_snapshots/test_b/wasm/test_with_real_contract_wasm_auth_approve.1.json @@ -169,7 +169,7 @@ "val": { "contract_instance": { "executable": { - "wasm": "a5e80350f39fe69d87d3f47c887ce29c058589bc026c42589b1607e276e6b442" + "wasm": "007f7327ae2a86500fbfb00e56031be848a96aeb40f1fbfef55802c60063358b" }, "storage": null } @@ -217,7 +217,7 @@ [ { "contract_code": { - "hash": "a5e80350f39fe69d87d3f47c887ce29c058589bc026c42589b1607e276e6b442" + "hash": "007f7327ae2a86500fbfb00e56031be848a96aeb40f1fbfef55802c60063358b" } }, [ @@ -243,8 +243,8 @@ } } }, - "hash": "a5e80350f39fe69d87d3f47c887ce29c058589bc026c42589b1607e276e6b442", - "code": "0061736d01000000010b0260037e7e7e017e600000030302000105030100100619037f01418080c0000b7f00418080c0000b7f00418080c0000b073805066d656d6f727902000c5f5f636865636b5f617574680000015f00010a5f5f646174615f656e6403010b5f5f686561705f6261736503020a0902040042020b02000b0083010e636f6e747261637473706563763000000000000000000000000c5f5f636865636b5f617574680000000300000000000000125f7369676e61747572655f7061796c6f6164000000000000000000000000000b5f7369676e6174757265730000000000000000000000000d5f617574685f636f6e746578740000000000000000000000001e11636f6e7472616374656e766d657461763000000000000000150000000000770e636f6e74726163746d65746176300000000000000005727376657200000000000006312e38312e3000000000000000000008727373646b7665720000003532312e362e3023646362346632343731663135666232326664316131303436366537646465386636383633623162342d6469727479000000" + "hash": "007f7327ae2a86500fbfb00e56031be848a96aeb40f1fbfef55802c60063358b", + "code": "0061736d01000000010b0260037e7e7e017e600000030302000105030100100619037f01418080c0000b7f00418080c0000b7f00418080c0000b073805066d656d6f727902000c5f5f636865636b5f617574680000015f00010a5f5f646174615f656e6403010b5f5f686561705f6261736503020a0902040042020b02000b0083010e636f6e747261637473706563763000000000000000000000000c5f5f636865636b5f617574680000000300000000000000125f7369676e61747572655f7061796c6f6164000000000000000000000000000b5f7369676e6174757265730000000000000000000000000d5f617574685f636f6e746578740000000000000000000000001e11636f6e7472616374656e766d657461763000000000000000150000000000770e636f6e74726163746d65746176300000000000000005727376657200000000000006312e38312e3000000000000000000008727373646b7665720000003532312e362e3023346565666530333930303035663362386330386433323266313638653435343834396631666236322d6469727479000000" } }, "ext": "v0" diff --git a/tests/auth/test_snapshots/test_b/wasm/test_with_real_contract_wasm_auth_decline.1.json b/tests/auth/test_snapshots/test_b/wasm/test_with_real_contract_wasm_auth_decline.1.json index 98bf557c9..67ec8f397 100644 --- a/tests/auth/test_snapshots/test_b/wasm/test_with_real_contract_wasm_auth_decline.1.json +++ b/tests/auth/test_snapshots/test_b/wasm/test_with_real_contract_wasm_auth_decline.1.json @@ -133,7 +133,7 @@ "val": { "contract_instance": { "executable": { - "wasm": "90f6ec1c3bbd8b2c6430bd5412c7b9813853c7bc20b9e112a7603946f469a479" + "wasm": "1d2d9f314cc79444a70b00e8d04342ef567334f3cda4f7063c7587dd3cc22b5c" }, "storage": null } @@ -148,7 +148,7 @@ [ { "contract_code": { - "hash": "90f6ec1c3bbd8b2c6430bd5412c7b9813853c7bc20b9e112a7603946f469a479" + "hash": "1d2d9f314cc79444a70b00e8d04342ef567334f3cda4f7063c7587dd3cc22b5c" } }, [ @@ -174,8 +174,8 @@ } } }, - "hash": "90f6ec1c3bbd8b2c6430bd5412c7b9813853c7bc20b9e112a7603946f469a479", - "code": "0061736d01000000010b0260037e7e7e017e600000030302000105030100100619037f01418080c0000b7f00418080c0000b7f00418080c0000b073805066d656d6f727902000c5f5f636865636b5f617574680000015f00010a5f5f646174615f656e6403010b5f5f686561705f6261736503020a0d0208004283808080100b02000b00c3010e636f6e7472616374737065637630000000040000000000000000000000054572726f720000000000000100000000000000074465636c696e65000000000100000000000000000000000c5f5f636865636b5f617574680000000300000000000000125f7369676e61747572655f7061796c6f6164000000000000000000000000000b5f7369676e6174757265730000000000000000000000000d5f617574685f636f6e746578740000000000000000000001000003e9000003ed0000000000000003001e11636f6e7472616374656e766d657461763000000000000000150000000000770e636f6e74726163746d65746176300000000000000005727376657200000000000006312e38312e3000000000000000000008727373646b7665720000003532312e362e3023646362346632343731663135666232326664316131303436366537646465386636383633623162342d6469727479000000" + "hash": "1d2d9f314cc79444a70b00e8d04342ef567334f3cda4f7063c7587dd3cc22b5c", + "code": "0061736d01000000010b0260037e7e7e017e600000030302000105030100100619037f01418080c0000b7f00418080c0000b7f00418080c0000b073805066d656d6f727902000c5f5f636865636b5f617574680000015f00010a5f5f646174615f656e6403010b5f5f686561705f6261736503020a0d0208004283808080100b02000b00c3010e636f6e7472616374737065637630000000040000000000000000000000054572726f720000000000000100000000000000074465636c696e65000000000100000000000000000000000c5f5f636865636b5f617574680000000300000000000000125f7369676e61747572655f7061796c6f6164000000000000000000000000000b5f7369676e6174757265730000000000000000000000000d5f617574685f636f6e746578740000000000000000000001000003e9000003ed0000000000000003001e11636f6e7472616374656e766d657461763000000000000000150000000000770e636f6e74726163746d65746176300000000000000005727376657200000000000006312e38312e3000000000000000000008727373646b7665720000003532312e362e3023346565666530333930303035663362386330386433323266313638653435343834396631666236322d6469727479000000" } }, "ext": "v0" From 02b71621f569bd6a6e82bf14462c0b8de9e17c13 Mon Sep 17 00:00:00 2001 From: Leigh McCulloch <351529+leighmcculloch@users.noreply.github.com> Date: Tue, 10 Sep 2024 14:02:21 +1000 Subject: [PATCH 6/8] remove unrelated tests moved to another pr --- Cargo.lock | 14 ---- tests/auth/src/lib.rs | 129 ---------------------------------- tests/auth_approve/Cargo.toml | 18 ----- tests/auth_approve/src/lib.rs | 11 --- tests/auth_decline/Cargo.toml | 18 ----- tests/auth_decline/src/lib.rs | 24 ------- 6 files changed, 214 deletions(-) delete mode 100644 tests/auth_approve/Cargo.toml delete mode 100644 tests/auth_approve/src/lib.rs delete mode 100644 tests/auth_decline/Cargo.toml delete mode 100644 tests/auth_decline/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index fb803055a..39bd2ba9b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1420,20 +1420,6 @@ dependencies = [ "soroban-sdk", ] -[[package]] -name = "test_auth_approve" -version = "21.6.0" -dependencies = [ - "soroban-sdk", -] - -[[package]] -name = "test_auth_decline" -version = "21.6.0" -dependencies = [ - "soroban-sdk", -] - [[package]] name = "test_contract_data" version = "21.6.0" diff --git a/tests/auth/src/lib.rs b/tests/auth/src/lib.rs index 6caf81c34..ffd7f3ae9 100644 --- a/tests/auth/src/lib.rs +++ b/tests/auth/src/lib.rs @@ -482,133 +482,4 @@ mod test_b { } } } - - mod wasm { - use super::*; - - #[test] - fn test_with_real_contract_wasm_auth_approve() { - let e = Env::default(); - - let contract_a_id = e.register_contract(None, ContractA); - let contract_b_id = e.register_contract(None, ContractB); - let client = ContractBClient::new(&e, &contract_b_id); - - mod imported_auth_approve { - soroban_sdk::contractimport!( - file = "../../target/wasm32-unknown-unknown/release/test_auth_approve.wasm" - ); - } - - let a = e.register_contract_wasm(None, imported_auth_approve::WASM); - let a_xdr: ScAddress = (&a).try_into().unwrap(); - - let r = client - .set_auths(&[SorobanAuthorizationEntry { - credentials: SorobanCredentials::Address(SorobanAddressCredentials { - address: a_xdr.clone(), - nonce: 789, - signature_expiration_ledger: 150, - signature: ScVal::Void, - }), - root_invocation: SorobanAuthorizedInvocation { - function: SorobanAuthorizedFunction::ContractFn(InvokeContractArgs { - contract_address: contract_b_id.clone().try_into().unwrap(), - function_name: StringM::try_from("fn2").unwrap().into(), - args: std::vec![ScVal::I32(1), ScVal::I32(2),].try_into().unwrap(), - }), - sub_invocations: std::vec![SorobanAuthorizedInvocation { - function: SorobanAuthorizedFunction::ContractFn(InvokeContractArgs { - contract_address: contract_a_id.clone().try_into().unwrap(), - function_name: StringM::try_from("fn1").unwrap().into(), - args: std::vec![ScVal::Address(a_xdr.clone())].try_into().unwrap(), - },), - sub_invocations: Default::default() - }] - .try_into() - .unwrap(), - }, - }]) - .try_fn2(&a, &contract_a_id); - - assert_eq!(r, Ok(Ok(2))); - - assert_eq!( - e.auths(), - [( - a.clone(), - AuthorizedInvocation { - function: AuthorizedFunction::Contract(( - contract_b_id.clone(), - symbol_short!("fn2"), - (1, 2).into_val(&e), - )), - sub_invocations: std::vec![AuthorizedInvocation { - function: AuthorizedFunction::Contract(( - contract_a_id.clone(), - symbol_short!("fn1"), - (&a,).into_val(&e), - )), - sub_invocations: std::vec![] - }] - } - ),], - ); - } - - #[test] - fn test_with_real_contract_wasm_auth_decline() { - let e = Env::default(); - - let contract_a_id = e.register_contract(None, ContractA); - let contract_b_id = e.register_contract(None, ContractB); - let client = ContractBClient::new(&e, &contract_b_id); - - mod imported_auth_decline { - soroban_sdk::contractimport!( - file = "../../target/wasm32-unknown-unknown/release/test_auth_decline.wasm" - ); - } - - let a = e.register_contract_wasm(None, imported_auth_decline::WASM); - let a_xdr: ScAddress = (&a).try_into().unwrap(); - - let r = client - .set_auths(&[SorobanAuthorizationEntry { - credentials: SorobanCredentials::Address(SorobanAddressCredentials { - address: a_xdr.clone(), - nonce: 789, - signature_expiration_ledger: 150, - signature: ScVal::Void, - }), - root_invocation: SorobanAuthorizedInvocation { - function: SorobanAuthorizedFunction::ContractFn(InvokeContractArgs { - contract_address: contract_b_id.try_into().unwrap(), - function_name: StringM::try_from("fn2").unwrap().into(), - args: std::vec![ScVal::I32(1), ScVal::I32(2),].try_into().unwrap(), - }), - sub_invocations: std::vec![SorobanAuthorizedInvocation { - function: SorobanAuthorizedFunction::ContractFn(InvokeContractArgs { - contract_address: contract_a_id.clone().try_into().unwrap(), - function_name: StringM::try_from("fn1").unwrap().into(), - args: std::vec![ScVal::Address(a_xdr.clone())].try_into().unwrap(), - },), - sub_invocations: Default::default() - }] - .try_into() - .unwrap(), - }, - }]) - .try_fn2(&a, &contract_a_id); - - assert_eq!( - r, - Err(Ok(Error::from_scerror(ScError::Context( - ScErrorCode::InvalidAction - )))) - ); - - assert_eq!(e.auths(), []); - } - } } diff --git a/tests/auth_approve/Cargo.toml b/tests/auth_approve/Cargo.toml deleted file mode 100644 index 7ffa1c202..000000000 --- a/tests/auth_approve/Cargo.toml +++ /dev/null @@ -1,18 +0,0 @@ -[package] -name = "test_auth_approve" -version.workspace = true -authors = ["Stellar Development Foundation "] -license = "Apache-2.0" -edition = "2021" -publish = false -rust-version.workspace = true - -[lib] -crate-type = ["cdylib"] -doctest = false - -[dependencies] -soroban-sdk = {path = "../../soroban-sdk"} - -[dev-dependencies] -soroban-sdk = {path = "../../soroban-sdk", features = ["testutils"]} diff --git a/tests/auth_approve/src/lib.rs b/tests/auth_approve/src/lib.rs deleted file mode 100644 index a85cc1d41..000000000 --- a/tests/auth_approve/src/lib.rs +++ /dev/null @@ -1,11 +0,0 @@ -#![no_std] -use soroban_sdk::{contract, contractimpl, Val}; - -#[contract] -pub struct Contract; - -#[contractimpl] -impl Contract { - #[allow(non_snake_case)] - pub fn __check_auth(_signature_payload: Val, _signatures: Val, _auth_context: Val) {} -} diff --git a/tests/auth_decline/Cargo.toml b/tests/auth_decline/Cargo.toml deleted file mode 100644 index 25eb727b6..000000000 --- a/tests/auth_decline/Cargo.toml +++ /dev/null @@ -1,18 +0,0 @@ -[package] -name = "test_auth_decline" -version.workspace = true -authors = ["Stellar Development Foundation "] -license = "Apache-2.0" -edition = "2021" -publish = false -rust-version.workspace = true - -[lib] -crate-type = ["cdylib"] -doctest = false - -[dependencies] -soroban-sdk = {path = "../../soroban-sdk"} - -[dev-dependencies] -soroban-sdk = {path = "../../soroban-sdk", features = ["testutils"]} diff --git a/tests/auth_decline/src/lib.rs b/tests/auth_decline/src/lib.rs deleted file mode 100644 index 1e688b959..000000000 --- a/tests/auth_decline/src/lib.rs +++ /dev/null @@ -1,24 +0,0 @@ -#![no_std] -use soroban_sdk::{contract, contracterror, contractimpl, Val}; - -#[contract] -pub struct Contract; - -#[contracterror] -#[derive(Copy, Clone, Debug, Eq, PartialEq, PartialOrd, Ord)] -#[repr(u32)] -pub enum Error { - Decline = 1, -} - -#[contractimpl] -impl Contract { - #[allow(non_snake_case)] - pub fn __check_auth( - _signature_payload: Val, - _signatures: Val, - _auth_context: Val, - ) -> Result<(), Error> { - Err(Error::Decline) - } -} From 2e3b3b208588c9dcc03a6189a03bc5cdc34b03e6 Mon Sep 17 00:00:00 2001 From: Leigh McCulloch <351529+leighmcculloch@users.noreply.github.com> Date: Tue, 10 Sep 2024 14:03:48 +1000 Subject: [PATCH 7/8] remove snapshots --- ...ith_real_contract_wasm_auth_approve.1.json | 522 ------------------ ...ith_real_contract_wasm_auth_decline.1.json | 514 ----------------- ...ith_real_contract_wasm_auth_approve.1.json | 522 ------------------ ...ith_real_contract_wasm_auth_decline.1.json | 514 ----------------- 4 files changed, 2072 deletions(-) delete mode 100644 tests/auth/test_snapshots/test_b/test_with_real_contract_wasm_auth_approve.1.json delete mode 100644 tests/auth/test_snapshots/test_b/test_with_real_contract_wasm_auth_decline.1.json delete mode 100644 tests/auth/test_snapshots/test_b/wasm/test_with_real_contract_wasm_auth_approve.1.json delete mode 100644 tests/auth/test_snapshots/test_b/wasm/test_with_real_contract_wasm_auth_decline.1.json diff --git a/tests/auth/test_snapshots/test_b/test_with_real_contract_wasm_auth_approve.1.json b/tests/auth/test_snapshots/test_b/test_with_real_contract_wasm_auth_approve.1.json deleted file mode 100644 index 9f2a18e69..000000000 --- a/tests/auth/test_snapshots/test_b/test_with_real_contract_wasm_auth_approve.1.json +++ /dev/null @@ -1,522 +0,0 @@ -{ - "generators": { - "address": 3, - "nonce": 0 - }, - "auth": [ - [ - [ - "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P", - { - "function": { - "contract_fn": { - "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", - "function_name": "fn2", - "args": [ - { - "i32": 1 - }, - { - "i32": 2 - } - ] - } - }, - "sub_invocations": [ - { - "function": { - "contract_fn": { - "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "function_name": "fn1", - "args": [ - { - "address": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P" - } - ] - } - }, - "sub_invocations": [] - } - ] - } - ] - ] - ], - "ledger": { - "protocol_version": 21, - "sequence_number": 0, - "timestamp": 0, - "network_id": "0000000000000000000000000000000000000000000000000000000000000000", - "base_reserve": 0, - "min_persistent_entry_ttl": 4096, - "min_temp_entry_ttl": 16, - "max_entry_ttl": 6312000, - "ledger_entries": [ - [ - { - "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": "ledger_key_contract_instance", - "durability": "persistent" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": "ledger_key_contract_instance", - "durability": "persistent", - "val": { - "contract_instance": { - "executable": { - "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" - }, - "storage": null - } - } - } - }, - "ext": "v0" - }, - 4095 - ] - ], - [ - { - "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", - "key": "ledger_key_contract_instance", - "durability": "persistent" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", - "key": "ledger_key_contract_instance", - "durability": "persistent", - "val": { - "contract_instance": { - "executable": { - "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" - }, - "storage": null - } - } - } - }, - "ext": "v0" - }, - 4095 - ] - ], - [ - { - "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", - "key": { - "ledger_key_nonce": { - "nonce": 801925984706572462 - } - }, - "durability": "temporary" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", - "key": { - "ledger_key_nonce": { - "nonce": 801925984706572462 - } - }, - "durability": "temporary", - "val": "void" - } - }, - "ext": "v0" - }, - 6311999 - ] - ], - [ - { - "contract_data": { - "contract": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P", - "key": "ledger_key_contract_instance", - "durability": "persistent" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P", - "key": "ledger_key_contract_instance", - "durability": "persistent", - "val": { - "contract_instance": { - "executable": { - "wasm": "11a0694e52ff75c8e5da5a0c88f227a8eab07aa6b0f10526afa4a86b053f1f44" - }, - "storage": null - } - } - } - }, - "ext": "v0" - }, - 4095 - ] - ], - [ - { - "contract_data": { - "contract": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P", - "key": { - "ledger_key_nonce": { - "nonce": 789 - } - }, - "durability": "temporary" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P", - "key": { - "ledger_key_nonce": { - "nonce": 789 - } - }, - "durability": "temporary", - "val": "void" - } - }, - "ext": "v0" - }, - 150 - ] - ], - [ - { - "contract_code": { - "hash": "11a0694e52ff75c8e5da5a0c88f227a8eab07aa6b0f10526afa4a86b053f1f44" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_code": { - "ext": { - "v1": { - "ext": "v0", - "cost_inputs": { - "ext": "v0", - "n_instructions": 3, - "n_functions": 2, - "n_globals": 3, - "n_table_entries": 0, - "n_types": 2, - "n_data_segments": 0, - "n_elem_segments": 0, - "n_imports": 0, - "n_exports": 5, - "n_data_segment_bytes": 0 - } - } - }, - "hash": "11a0694e52ff75c8e5da5a0c88f227a8eab07aa6b0f10526afa4a86b053f1f44", - "code": "0061736d01000000010b0260037e7e7e017e600000030302000105030100100619037f01418080c0000b7f00418080c0000b7f00418080c0000b073805066d656d6f727902000c5f5f636865636b5f617574680000015f00010a5f5f646174615f656e6403010b5f5f686561705f6261736503020a0902040042020b02000b0083010e636f6e747261637473706563763000000000000000000000000c5f5f636865636b5f617574680000000300000000000000125f7369676e61747572655f7061796c6f6164000000000000000000000000000b5f7369676e6174757265730000000000000000000000000d5f617574685f636f6e746578740000000000000000000000001e11636f6e7472616374656e766d657461763000000000000000150000000000770e636f6e74726163746d65746176300000000000000005727376657200000000000006312e38312e3000000000000000000008727373646b7665720000003532312e362e3023663537643234353465353230616531316463396338643535646236313035353761323461353536652d6469727479000000" - } - }, - "ext": "v0" - }, - 4095 - ] - ], - [ - { - "contract_code": { - "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_code": { - "ext": "v0", - "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", - "code": "" - } - }, - "ext": "v0" - }, - 4095 - ] - ] - ] - }, - "events": [ - { - "event": { - "ext": "v0", - "contract_id": null, - "type_": "diagnostic", - "body": { - "v0": { - "topics": [ - { - "symbol": "fn_call" - }, - { - "bytes": "0000000000000000000000000000000000000000000000000000000000000002" - }, - { - "symbol": "fn2" - } - ], - "data": { - "vec": [ - { - "address": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" - } - ] - } - } - } - }, - "failed_call": false - }, - { - "event": { - "ext": "v0", - "contract_id": "0000000000000000000000000000000000000000000000000000000000000002", - "type_": "diagnostic", - "body": { - "v0": { - "topics": [ - { - "symbol": "fn_call" - }, - { - "bytes": "13731514dea3a91781adeba2075794a8fa060c6dec9b07a6c4bf627fd32bdf1f" - }, - { - "symbol": "__check_auth" - } - ], - "data": { - "vec": [ - { - "bytes": "eb9c712261ce18f8d113eb058d23edb6cb994750920cf52758d574c4ccfe134e" - }, - "void", - { - "vec": [ - { - "vec": [ - { - "symbol": "Contract" - }, - { - "map": [ - { - "key": { - "symbol": "args" - }, - "val": { - "vec": [ - { - "i32": 1 - }, - { - "i32": 2 - } - ] - } - }, - { - "key": { - "symbol": "contract" - }, - "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" - } - }, - { - "key": { - "symbol": "fn_name" - }, - "val": { - "symbol": "fn2" - } - } - ] - } - ] - }, - { - "vec": [ - { - "symbol": "Contract" - }, - { - "map": [ - { - "key": { - "symbol": "args" - }, - "val": { - "vec": [ - { - "address": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P" - } - ] - } - }, - { - "key": { - "symbol": "contract" - }, - "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" - } - }, - { - "key": { - "symbol": "fn_name" - }, - "val": { - "symbol": "fn1" - } - } - ] - } - ] - } - ] - } - ] - } - } - } - }, - "failed_call": false - }, - { - "event": { - "ext": "v0", - "contract_id": "13731514dea3a91781adeba2075794a8fa060c6dec9b07a6c4bf627fd32bdf1f", - "type_": "diagnostic", - "body": { - "v0": { - "topics": [ - { - "symbol": "fn_return" - }, - { - "symbol": "__check_auth" - } - ], - "data": "void" - } - } - }, - "failed_call": false - }, - { - "event": { - "ext": "v0", - "contract_id": "0000000000000000000000000000000000000000000000000000000000000002", - "type_": "diagnostic", - "body": { - "v0": { - "topics": [ - { - "symbol": "fn_call" - }, - { - "bytes": "0000000000000000000000000000000000000000000000000000000000000001" - }, - { - "symbol": "fn1" - } - ], - "data": { - "address": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P" - } - } - } - }, - "failed_call": false - }, - { - "event": { - "ext": "v0", - "contract_id": "0000000000000000000000000000000000000000000000000000000000000001", - "type_": "diagnostic", - "body": { - "v0": { - "topics": [ - { - "symbol": "fn_return" - }, - { - "symbol": "fn1" - } - ], - "data": { - "u64": 2 - } - } - } - }, - "failed_call": false - }, - { - "event": { - "ext": "v0", - "contract_id": "0000000000000000000000000000000000000000000000000000000000000002", - "type_": "diagnostic", - "body": { - "v0": { - "topics": [ - { - "symbol": "fn_return" - }, - { - "symbol": "fn2" - } - ], - "data": { - "u64": 2 - } - } - } - }, - "failed_call": false - } - ] -} \ No newline at end of file diff --git a/tests/auth/test_snapshots/test_b/test_with_real_contract_wasm_auth_decline.1.json b/tests/auth/test_snapshots/test_b/test_with_real_contract_wasm_auth_decline.1.json deleted file mode 100644 index ac9a40f40..000000000 --- a/tests/auth/test_snapshots/test_b/test_with_real_contract_wasm_auth_decline.1.json +++ /dev/null @@ -1,514 +0,0 @@ -{ - "generators": { - "address": 3, - "nonce": 0 - }, - "auth": [ - [] - ], - "ledger": { - "protocol_version": 21, - "sequence_number": 0, - "timestamp": 0, - "network_id": "0000000000000000000000000000000000000000000000000000000000000000", - "base_reserve": 0, - "min_persistent_entry_ttl": 4096, - "min_temp_entry_ttl": 16, - "max_entry_ttl": 6312000, - "ledger_entries": [ - [ - { - "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": "ledger_key_contract_instance", - "durability": "persistent" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": "ledger_key_contract_instance", - "durability": "persistent", - "val": { - "contract_instance": { - "executable": { - "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" - }, - "storage": null - } - } - } - }, - "ext": "v0" - }, - 4095 - ] - ], - [ - { - "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", - "key": "ledger_key_contract_instance", - "durability": "persistent" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", - "key": "ledger_key_contract_instance", - "durability": "persistent", - "val": { - "contract_instance": { - "executable": { - "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" - }, - "storage": null - } - } - } - }, - "ext": "v0" - }, - 4095 - ] - ], - [ - { - "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", - "key": { - "ledger_key_nonce": { - "nonce": 801925984706572462 - } - }, - "durability": "temporary" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", - "key": { - "ledger_key_nonce": { - "nonce": 801925984706572462 - } - }, - "durability": "temporary", - "val": "void" - } - }, - "ext": "v0" - }, - 6311999 - ] - ], - [ - { - "contract_data": { - "contract": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P", - "key": "ledger_key_contract_instance", - "durability": "persistent" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P", - "key": "ledger_key_contract_instance", - "durability": "persistent", - "val": { - "contract_instance": { - "executable": { - "wasm": "5a9f62c78ca35c1fb193d0c7c214c719f606ddc481890ae3d8b69945dffc28e0" - }, - "storage": null - } - } - } - }, - "ext": "v0" - }, - 4095 - ] - ], - [ - { - "contract_code": { - "hash": "5a9f62c78ca35c1fb193d0c7c214c719f606ddc481890ae3d8b69945dffc28e0" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_code": { - "ext": { - "v1": { - "ext": "v0", - "cost_inputs": { - "ext": "v0", - "n_instructions": 3, - "n_functions": 2, - "n_globals": 3, - "n_table_entries": 0, - "n_types": 2, - "n_data_segments": 0, - "n_elem_segments": 0, - "n_imports": 0, - "n_exports": 5, - "n_data_segment_bytes": 0 - } - } - }, - "hash": "5a9f62c78ca35c1fb193d0c7c214c719f606ddc481890ae3d8b69945dffc28e0", - "code": "0061736d01000000010b0260037e7e7e017e600000030302000105030100100619037f01418080c0000b7f00418080c0000b7f00418080c0000b073805066d656d6f727902000c5f5f636865636b5f617574680000015f00010a5f5f646174615f656e6403010b5f5f686561705f6261736503020a0d0208004283808080100b02000b00c3010e636f6e7472616374737065637630000000040000000000000000000000054572726f720000000000000100000000000000074465636c696e65000000000100000000000000000000000c5f5f636865636b5f617574680000000300000000000000125f7369676e61747572655f7061796c6f6164000000000000000000000000000b5f7369676e6174757265730000000000000000000000000d5f617574685f636f6e746578740000000000000000000001000003e9000003ed0000000000000003001e11636f6e7472616374656e766d657461763000000000000000150000000000770e636f6e74726163746d65746176300000000000000005727376657200000000000006312e38312e3000000000000000000008727373646b7665720000003532312e362e3023663537643234353465353230616531316463396338643535646236313035353761323461353536652d6469727479000000" - } - }, - "ext": "v0" - }, - 4095 - ] - ], - [ - { - "contract_code": { - "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_code": { - "ext": "v0", - "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", - "code": "" - } - }, - "ext": "v0" - }, - 4095 - ] - ] - ] - }, - "events": [ - { - "event": { - "ext": "v0", - "contract_id": null, - "type_": "diagnostic", - "body": { - "v0": { - "topics": [ - { - "symbol": "fn_call" - }, - { - "bytes": "0000000000000000000000000000000000000000000000000000000000000002" - }, - { - "symbol": "fn2" - } - ], - "data": { - "vec": [ - { - "address": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" - } - ] - } - } - } - }, - "failed_call": false - }, - { - "event": { - "ext": "v0", - "contract_id": "0000000000000000000000000000000000000000000000000000000000000002", - "type_": "diagnostic", - "body": { - "v0": { - "topics": [ - { - "symbol": "fn_call" - }, - { - "bytes": "13731514dea3a91781adeba2075794a8fa060c6dec9b07a6c4bf627fd32bdf1f" - }, - { - "symbol": "__check_auth" - } - ], - "data": { - "vec": [ - { - "bytes": "eb9c712261ce18f8d113eb058d23edb6cb994750920cf52758d574c4ccfe134e" - }, - "void", - { - "vec": [ - { - "vec": [ - { - "symbol": "Contract" - }, - { - "map": [ - { - "key": { - "symbol": "args" - }, - "val": { - "vec": [ - { - "i32": 1 - }, - { - "i32": 2 - } - ] - } - }, - { - "key": { - "symbol": "contract" - }, - "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" - } - }, - { - "key": { - "symbol": "fn_name" - }, - "val": { - "symbol": "fn2" - } - } - ] - } - ] - }, - { - "vec": [ - { - "symbol": "Contract" - }, - { - "map": [ - { - "key": { - "symbol": "args" - }, - "val": { - "vec": [ - { - "address": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P" - } - ] - } - }, - { - "key": { - "symbol": "contract" - }, - "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" - } - }, - { - "key": { - "symbol": "fn_name" - }, - "val": { - "symbol": "fn1" - } - } - ] - } - ] - } - ] - } - ] - } - } - } - }, - "failed_call": true - }, - { - "event": { - "ext": "v0", - "contract_id": "13731514dea3a91781adeba2075794a8fa060c6dec9b07a6c4bf627fd32bdf1f", - "type_": "diagnostic", - "body": { - "v0": { - "topics": [ - { - "symbol": "error" - }, - { - "error": { - "contract": 1 - } - } - ], - "data": { - "string": "escalating Ok(ScErrorType::Contract) frame-exit to Err" - } - } - } - }, - "failed_call": true - }, - { - "event": { - "ext": "v0", - "contract_id": "0000000000000000000000000000000000000000000000000000000000000002", - "type_": "diagnostic", - "body": { - "v0": { - "topics": [ - { - "symbol": "error" - }, - { - "error": { - "auth": "invalid_action" - } - } - ], - "data": { - "vec": [ - { - "string": "failed account authentication with error" - }, - { - "address": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P" - }, - { - "error": { - "contract": 1 - } - } - ] - } - } - } - }, - "failed_call": true - }, - { - "event": { - "ext": "v0", - "contract_id": "0000000000000000000000000000000000000000000000000000000000000002", - "type_": "diagnostic", - "body": { - "v0": { - "topics": [ - { - "symbol": "error" - }, - { - "error": { - "auth": "invalid_action" - } - } - ], - "data": { - "string": "escalating error to panic" - } - } - } - }, - "failed_call": true - }, - { - "event": { - "ext": "v0", - "contract_id": "0000000000000000000000000000000000000000000000000000000000000002", - "type_": "diagnostic", - "body": { - "v0": { - "topics": [ - { - "symbol": "error" - }, - { - "error": { - "auth": "invalid_action" - } - } - ], - "data": { - "string": "caught error from function" - } - } - } - }, - "failed_call": true - }, - { - "event": { - "ext": "v0", - "contract_id": null, - "type_": "diagnostic", - "body": { - "v0": { - "topics": [ - { - "symbol": "error" - }, - { - "error": { - "auth": "invalid_action" - } - } - ], - "data": { - "vec": [ - { - "string": "contract try_call failed" - }, - { - "symbol": "fn2" - }, - { - "vec": [ - { - "address": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" - } - ] - } - ] - } - } - } - }, - "failed_call": false - } - ] -} \ No newline at end of file diff --git a/tests/auth/test_snapshots/test_b/wasm/test_with_real_contract_wasm_auth_approve.1.json b/tests/auth/test_snapshots/test_b/wasm/test_with_real_contract_wasm_auth_approve.1.json deleted file mode 100644 index 0a13e3e59..000000000 --- a/tests/auth/test_snapshots/test_b/wasm/test_with_real_contract_wasm_auth_approve.1.json +++ /dev/null @@ -1,522 +0,0 @@ -{ - "generators": { - "address": 3, - "nonce": 0 - }, - "auth": [ - [ - [ - "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P", - { - "function": { - "contract_fn": { - "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", - "function_name": "fn2", - "args": [ - { - "i32": 1 - }, - { - "i32": 2 - } - ] - } - }, - "sub_invocations": [ - { - "function": { - "contract_fn": { - "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "function_name": "fn1", - "args": [ - { - "address": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P" - } - ] - } - }, - "sub_invocations": [] - } - ] - } - ] - ] - ], - "ledger": { - "protocol_version": 21, - "sequence_number": 0, - "timestamp": 0, - "network_id": "0000000000000000000000000000000000000000000000000000000000000000", - "base_reserve": 0, - "min_persistent_entry_ttl": 4096, - "min_temp_entry_ttl": 16, - "max_entry_ttl": 6312000, - "ledger_entries": [ - [ - { - "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": "ledger_key_contract_instance", - "durability": "persistent" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": "ledger_key_contract_instance", - "durability": "persistent", - "val": { - "contract_instance": { - "executable": { - "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" - }, - "storage": null - } - } - } - }, - "ext": "v0" - }, - 4095 - ] - ], - [ - { - "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", - "key": "ledger_key_contract_instance", - "durability": "persistent" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", - "key": "ledger_key_contract_instance", - "durability": "persistent", - "val": { - "contract_instance": { - "executable": { - "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" - }, - "storage": null - } - } - } - }, - "ext": "v0" - }, - 4095 - ] - ], - [ - { - "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", - "key": { - "ledger_key_nonce": { - "nonce": 801925984706572462 - } - }, - "durability": "temporary" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", - "key": { - "ledger_key_nonce": { - "nonce": 801925984706572462 - } - }, - "durability": "temporary", - "val": "void" - } - }, - "ext": "v0" - }, - 6311999 - ] - ], - [ - { - "contract_data": { - "contract": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P", - "key": "ledger_key_contract_instance", - "durability": "persistent" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P", - "key": "ledger_key_contract_instance", - "durability": "persistent", - "val": { - "contract_instance": { - "executable": { - "wasm": "007f7327ae2a86500fbfb00e56031be848a96aeb40f1fbfef55802c60063358b" - }, - "storage": null - } - } - } - }, - "ext": "v0" - }, - 4095 - ] - ], - [ - { - "contract_data": { - "contract": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P", - "key": { - "ledger_key_nonce": { - "nonce": 789 - } - }, - "durability": "temporary" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P", - "key": { - "ledger_key_nonce": { - "nonce": 789 - } - }, - "durability": "temporary", - "val": "void" - } - }, - "ext": "v0" - }, - 150 - ] - ], - [ - { - "contract_code": { - "hash": "007f7327ae2a86500fbfb00e56031be848a96aeb40f1fbfef55802c60063358b" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_code": { - "ext": { - "v1": { - "ext": "v0", - "cost_inputs": { - "ext": "v0", - "n_instructions": 3, - "n_functions": 2, - "n_globals": 3, - "n_table_entries": 0, - "n_types": 2, - "n_data_segments": 0, - "n_elem_segments": 0, - "n_imports": 0, - "n_exports": 5, - "n_data_segment_bytes": 0 - } - } - }, - "hash": "007f7327ae2a86500fbfb00e56031be848a96aeb40f1fbfef55802c60063358b", - "code": "0061736d01000000010b0260037e7e7e017e600000030302000105030100100619037f01418080c0000b7f00418080c0000b7f00418080c0000b073805066d656d6f727902000c5f5f636865636b5f617574680000015f00010a5f5f646174615f656e6403010b5f5f686561705f6261736503020a0902040042020b02000b0083010e636f6e747261637473706563763000000000000000000000000c5f5f636865636b5f617574680000000300000000000000125f7369676e61747572655f7061796c6f6164000000000000000000000000000b5f7369676e6174757265730000000000000000000000000d5f617574685f636f6e746578740000000000000000000000001e11636f6e7472616374656e766d657461763000000000000000150000000000770e636f6e74726163746d65746176300000000000000005727376657200000000000006312e38312e3000000000000000000008727373646b7665720000003532312e362e3023346565666530333930303035663362386330386433323266313638653435343834396631666236322d6469727479000000" - } - }, - "ext": "v0" - }, - 4095 - ] - ], - [ - { - "contract_code": { - "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_code": { - "ext": "v0", - "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", - "code": "" - } - }, - "ext": "v0" - }, - 4095 - ] - ] - ] - }, - "events": [ - { - "event": { - "ext": "v0", - "contract_id": null, - "type_": "diagnostic", - "body": { - "v0": { - "topics": [ - { - "symbol": "fn_call" - }, - { - "bytes": "0000000000000000000000000000000000000000000000000000000000000002" - }, - { - "symbol": "fn2" - } - ], - "data": { - "vec": [ - { - "address": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" - } - ] - } - } - } - }, - "failed_call": false - }, - { - "event": { - "ext": "v0", - "contract_id": "0000000000000000000000000000000000000000000000000000000000000002", - "type_": "diagnostic", - "body": { - "v0": { - "topics": [ - { - "symbol": "fn_call" - }, - { - "bytes": "13731514dea3a91781adeba2075794a8fa060c6dec9b07a6c4bf627fd32bdf1f" - }, - { - "symbol": "__check_auth" - } - ], - "data": { - "vec": [ - { - "bytes": "eb9c712261ce18f8d113eb058d23edb6cb994750920cf52758d574c4ccfe134e" - }, - "void", - { - "vec": [ - { - "vec": [ - { - "symbol": "Contract" - }, - { - "map": [ - { - "key": { - "symbol": "args" - }, - "val": { - "vec": [ - { - "i32": 1 - }, - { - "i32": 2 - } - ] - } - }, - { - "key": { - "symbol": "contract" - }, - "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" - } - }, - { - "key": { - "symbol": "fn_name" - }, - "val": { - "symbol": "fn2" - } - } - ] - } - ] - }, - { - "vec": [ - { - "symbol": "Contract" - }, - { - "map": [ - { - "key": { - "symbol": "args" - }, - "val": { - "vec": [ - { - "address": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P" - } - ] - } - }, - { - "key": { - "symbol": "contract" - }, - "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" - } - }, - { - "key": { - "symbol": "fn_name" - }, - "val": { - "symbol": "fn1" - } - } - ] - } - ] - } - ] - } - ] - } - } - } - }, - "failed_call": false - }, - { - "event": { - "ext": "v0", - "contract_id": "13731514dea3a91781adeba2075794a8fa060c6dec9b07a6c4bf627fd32bdf1f", - "type_": "diagnostic", - "body": { - "v0": { - "topics": [ - { - "symbol": "fn_return" - }, - { - "symbol": "__check_auth" - } - ], - "data": "void" - } - } - }, - "failed_call": false - }, - { - "event": { - "ext": "v0", - "contract_id": "0000000000000000000000000000000000000000000000000000000000000002", - "type_": "diagnostic", - "body": { - "v0": { - "topics": [ - { - "symbol": "fn_call" - }, - { - "bytes": "0000000000000000000000000000000000000000000000000000000000000001" - }, - { - "symbol": "fn1" - } - ], - "data": { - "address": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P" - } - } - } - }, - "failed_call": false - }, - { - "event": { - "ext": "v0", - "contract_id": "0000000000000000000000000000000000000000000000000000000000000001", - "type_": "diagnostic", - "body": { - "v0": { - "topics": [ - { - "symbol": "fn_return" - }, - { - "symbol": "fn1" - } - ], - "data": { - "u64": 2 - } - } - } - }, - "failed_call": false - }, - { - "event": { - "ext": "v0", - "contract_id": "0000000000000000000000000000000000000000000000000000000000000002", - "type_": "diagnostic", - "body": { - "v0": { - "topics": [ - { - "symbol": "fn_return" - }, - { - "symbol": "fn2" - } - ], - "data": { - "u64": 2 - } - } - } - }, - "failed_call": false - } - ] -} \ No newline at end of file diff --git a/tests/auth/test_snapshots/test_b/wasm/test_with_real_contract_wasm_auth_decline.1.json b/tests/auth/test_snapshots/test_b/wasm/test_with_real_contract_wasm_auth_decline.1.json deleted file mode 100644 index 67ec8f397..000000000 --- a/tests/auth/test_snapshots/test_b/wasm/test_with_real_contract_wasm_auth_decline.1.json +++ /dev/null @@ -1,514 +0,0 @@ -{ - "generators": { - "address": 3, - "nonce": 0 - }, - "auth": [ - [] - ], - "ledger": { - "protocol_version": 21, - "sequence_number": 0, - "timestamp": 0, - "network_id": "0000000000000000000000000000000000000000000000000000000000000000", - "base_reserve": 0, - "min_persistent_entry_ttl": 4096, - "min_temp_entry_ttl": 16, - "max_entry_ttl": 6312000, - "ledger_entries": [ - [ - { - "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": "ledger_key_contract_instance", - "durability": "persistent" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": "ledger_key_contract_instance", - "durability": "persistent", - "val": { - "contract_instance": { - "executable": { - "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" - }, - "storage": null - } - } - } - }, - "ext": "v0" - }, - 4095 - ] - ], - [ - { - "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", - "key": "ledger_key_contract_instance", - "durability": "persistent" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", - "key": "ledger_key_contract_instance", - "durability": "persistent", - "val": { - "contract_instance": { - "executable": { - "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" - }, - "storage": null - } - } - } - }, - "ext": "v0" - }, - 4095 - ] - ], - [ - { - "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", - "key": { - "ledger_key_nonce": { - "nonce": 801925984706572462 - } - }, - "durability": "temporary" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", - "key": { - "ledger_key_nonce": { - "nonce": 801925984706572462 - } - }, - "durability": "temporary", - "val": "void" - } - }, - "ext": "v0" - }, - 6311999 - ] - ], - [ - { - "contract_data": { - "contract": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P", - "key": "ledger_key_contract_instance", - "durability": "persistent" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P", - "key": "ledger_key_contract_instance", - "durability": "persistent", - "val": { - "contract_instance": { - "executable": { - "wasm": "1d2d9f314cc79444a70b00e8d04342ef567334f3cda4f7063c7587dd3cc22b5c" - }, - "storage": null - } - } - } - }, - "ext": "v0" - }, - 4095 - ] - ], - [ - { - "contract_code": { - "hash": "1d2d9f314cc79444a70b00e8d04342ef567334f3cda4f7063c7587dd3cc22b5c" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_code": { - "ext": { - "v1": { - "ext": "v0", - "cost_inputs": { - "ext": "v0", - "n_instructions": 3, - "n_functions": 2, - "n_globals": 3, - "n_table_entries": 0, - "n_types": 2, - "n_data_segments": 0, - "n_elem_segments": 0, - "n_imports": 0, - "n_exports": 5, - "n_data_segment_bytes": 0 - } - } - }, - "hash": "1d2d9f314cc79444a70b00e8d04342ef567334f3cda4f7063c7587dd3cc22b5c", - "code": "0061736d01000000010b0260037e7e7e017e600000030302000105030100100619037f01418080c0000b7f00418080c0000b7f00418080c0000b073805066d656d6f727902000c5f5f636865636b5f617574680000015f00010a5f5f646174615f656e6403010b5f5f686561705f6261736503020a0d0208004283808080100b02000b00c3010e636f6e7472616374737065637630000000040000000000000000000000054572726f720000000000000100000000000000074465636c696e65000000000100000000000000000000000c5f5f636865636b5f617574680000000300000000000000125f7369676e61747572655f7061796c6f6164000000000000000000000000000b5f7369676e6174757265730000000000000000000000000d5f617574685f636f6e746578740000000000000000000001000003e9000003ed0000000000000003001e11636f6e7472616374656e766d657461763000000000000000150000000000770e636f6e74726163746d65746176300000000000000005727376657200000000000006312e38312e3000000000000000000008727373646b7665720000003532312e362e3023346565666530333930303035663362386330386433323266313638653435343834396631666236322d6469727479000000" - } - }, - "ext": "v0" - }, - 4095 - ] - ], - [ - { - "contract_code": { - "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_code": { - "ext": "v0", - "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", - "code": "" - } - }, - "ext": "v0" - }, - 4095 - ] - ] - ] - }, - "events": [ - { - "event": { - "ext": "v0", - "contract_id": null, - "type_": "diagnostic", - "body": { - "v0": { - "topics": [ - { - "symbol": "fn_call" - }, - { - "bytes": "0000000000000000000000000000000000000000000000000000000000000002" - }, - { - "symbol": "fn2" - } - ], - "data": { - "vec": [ - { - "address": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" - } - ] - } - } - } - }, - "failed_call": false - }, - { - "event": { - "ext": "v0", - "contract_id": "0000000000000000000000000000000000000000000000000000000000000002", - "type_": "diagnostic", - "body": { - "v0": { - "topics": [ - { - "symbol": "fn_call" - }, - { - "bytes": "13731514dea3a91781adeba2075794a8fa060c6dec9b07a6c4bf627fd32bdf1f" - }, - { - "symbol": "__check_auth" - } - ], - "data": { - "vec": [ - { - "bytes": "eb9c712261ce18f8d113eb058d23edb6cb994750920cf52758d574c4ccfe134e" - }, - "void", - { - "vec": [ - { - "vec": [ - { - "symbol": "Contract" - }, - { - "map": [ - { - "key": { - "symbol": "args" - }, - "val": { - "vec": [ - { - "i32": 1 - }, - { - "i32": 2 - } - ] - } - }, - { - "key": { - "symbol": "contract" - }, - "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" - } - }, - { - "key": { - "symbol": "fn_name" - }, - "val": { - "symbol": "fn2" - } - } - ] - } - ] - }, - { - "vec": [ - { - "symbol": "Contract" - }, - { - "map": [ - { - "key": { - "symbol": "args" - }, - "val": { - "vec": [ - { - "address": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P" - } - ] - } - }, - { - "key": { - "symbol": "contract" - }, - "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" - } - }, - { - "key": { - "symbol": "fn_name" - }, - "val": { - "symbol": "fn1" - } - } - ] - } - ] - } - ] - } - ] - } - } - } - }, - "failed_call": true - }, - { - "event": { - "ext": "v0", - "contract_id": "13731514dea3a91781adeba2075794a8fa060c6dec9b07a6c4bf627fd32bdf1f", - "type_": "diagnostic", - "body": { - "v0": { - "topics": [ - { - "symbol": "error" - }, - { - "error": { - "contract": 1 - } - } - ], - "data": { - "string": "escalating Ok(ScErrorType::Contract) frame-exit to Err" - } - } - } - }, - "failed_call": true - }, - { - "event": { - "ext": "v0", - "contract_id": "0000000000000000000000000000000000000000000000000000000000000002", - "type_": "diagnostic", - "body": { - "v0": { - "topics": [ - { - "symbol": "error" - }, - { - "error": { - "auth": "invalid_action" - } - } - ], - "data": { - "vec": [ - { - "string": "failed account authentication with error" - }, - { - "address": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P" - }, - { - "error": { - "contract": 1 - } - } - ] - } - } - } - }, - "failed_call": true - }, - { - "event": { - "ext": "v0", - "contract_id": "0000000000000000000000000000000000000000000000000000000000000002", - "type_": "diagnostic", - "body": { - "v0": { - "topics": [ - { - "symbol": "error" - }, - { - "error": { - "auth": "invalid_action" - } - } - ], - "data": { - "string": "escalating error to panic" - } - } - } - }, - "failed_call": true - }, - { - "event": { - "ext": "v0", - "contract_id": "0000000000000000000000000000000000000000000000000000000000000002", - "type_": "diagnostic", - "body": { - "v0": { - "topics": [ - { - "symbol": "error" - }, - { - "error": { - "auth": "invalid_action" - } - } - ], - "data": { - "string": "caught error from function" - } - } - } - }, - "failed_call": true - }, - { - "event": { - "ext": "v0", - "contract_id": null, - "type_": "diagnostic", - "body": { - "v0": { - "topics": [ - { - "symbol": "error" - }, - { - "error": { - "auth": "invalid_action" - } - } - ], - "data": { - "vec": [ - { - "string": "contract try_call failed" - }, - { - "symbol": "fn2" - }, - { - "vec": [ - { - "address": "CAJXGFIU32R2SF4BVXV2EB2XSSUPUBQMNXWJWB5GYS7WE76TFPPR7Q7P" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" - } - ] - } - ] - } - } - } - }, - "failed_call": false - } - ] -} \ No newline at end of file From f5962b73e70e5c30dd12626c9c89a7eb4917ae81 Mon Sep 17 00:00:00 2001 From: Leigh McCulloch <351529+leighmcculloch@users.noreply.github.com> Date: Tue, 10 Sep 2024 16:29:46 +1000 Subject: [PATCH 8/8] use extern "C" --- soroban-sdk-macros/src/derive_fn.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/soroban-sdk-macros/src/derive_fn.rs b/soroban-sdk-macros/src/derive_fn.rs index 89cfa3074..63745a7a5 100644 --- a/soroban-sdk-macros/src/derive_fn.rs +++ b/soroban-sdk-macros/src/derive_fn.rs @@ -156,7 +156,7 @@ pub fn derive_pub_fn( #[deprecated(note = #deprecated_note)] #[cfg_attr(target_family = "wasm", export_name = #wrap_export_name)] - pub extern fn invoke_raw_extern(env: #crate_path::Env, #(#wrap_args),*) -> #crate_path::Val { + pub extern "C" fn invoke_raw_extern(env: #crate_path::Env, #(#wrap_args),*) -> #crate_path::Val { #[allow(deprecated)] invoke_raw(env, #(#passthrough_calls),*) }