git.delta.rocks / unique-network / refs/commits / 5c9ffb7fd329

difftreelog

Merge pull request #827 from UniqueNetwork/fix/frontier-get-code

Yaroslav Bolyukin2023-01-16parents: #316164b #706a257.patch.diff
in: master
Fix eth_getCode

15 files changed

modifiedCargo.lockdiffbeforeafterboth
2467[[package]]2467[[package]]
2468name = "fc-consensus"2468name = "fc-consensus"
2469version = "2.0.0-dev"2469version = "2.0.0-dev"
2470source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14"2470source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#ef8d2809ed05da0664e9b43cb87436451295b634"
2471dependencies = [2471dependencies = [
2472 "async-trait",2472 "async-trait",
2473 "fc-db",2473 "fc-db",
2486[[package]]2486[[package]]
2487name = "fc-db"2487name = "fc-db"
2488version = "2.0.0-dev"2488version = "2.0.0-dev"
2489source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14"2489source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#ef8d2809ed05da0664e9b43cb87436451295b634"
2490dependencies = [2490dependencies = [
2491 "fp-storage",2491 "fp-storage",
2492 "kvdb-rocksdb",2492 "kvdb-rocksdb",
2505[[package]]2505[[package]]
2506name = "fc-mapping-sync"2506name = "fc-mapping-sync"
2507version = "2.0.0-dev"2507version = "2.0.0-dev"
2508source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14"2508source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#ef8d2809ed05da0664e9b43cb87436451295b634"
2509dependencies = [2509dependencies = [
2510 "fc-db",2510 "fc-db",
2511 "fp-consensus",2511 "fp-consensus",
2522[[package]]2522[[package]]
2523name = "fc-rpc"2523name = "fc-rpc"
2524version = "2.0.0-dev"2524version = "2.0.0-dev"
2525source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14"2525source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#ef8d2809ed05da0664e9b43cb87436451295b634"
2526dependencies = [2526dependencies = [
2527 "ethereum 0.14.0",2527 "ethereum 0.14.0",
2528 "ethereum-types 0.14.1",2528 "ethereum-types 0.14.1",
2565[[package]]2565[[package]]
2566name = "fc-rpc-core"2566name = "fc-rpc-core"
2567version = "1.1.0-dev"2567version = "1.1.0-dev"
2568source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14"2568source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#ef8d2809ed05da0664e9b43cb87436451295b634"
2569dependencies = [2569dependencies = [
2570 "ethereum 0.14.0",2570 "ethereum 0.14.0",
2571 "ethereum-types 0.14.1",2571 "ethereum-types 0.14.1",
2730[[package]]2730[[package]]
2731name = "fp-consensus"2731name = "fp-consensus"
2732version = "2.0.0-dev"2732version = "2.0.0-dev"
2733source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14"2733source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#ef8d2809ed05da0664e9b43cb87436451295b634"
2734dependencies = [2734dependencies = [
2735 "ethereum 0.14.0",2735 "ethereum 0.14.0",
2736 "parity-scale-codec 3.2.1",2736 "parity-scale-codec 3.2.1",
2742[[package]]2742[[package]]
2743name = "fp-ethereum"2743name = "fp-ethereum"
2744version = "1.0.0-dev"2744version = "1.0.0-dev"
2745source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14"2745source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#ef8d2809ed05da0664e9b43cb87436451295b634"
2746dependencies = [2746dependencies = [
2747 "ethereum 0.14.0",2747 "ethereum 0.14.0",
2748 "ethereum-types 0.14.1",2748 "ethereum-types 0.14.1",
2757[[package]]2757[[package]]
2758name = "fp-evm"2758name = "fp-evm"
2759version = "3.0.0-dev"2759version = "3.0.0-dev"
2760source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14"2760source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#ef8d2809ed05da0664e9b43cb87436451295b634"
2761dependencies = [2761dependencies = [
2762 "evm",2762 "evm",
2763 "frame-support",2763 "frame-support",
2771[[package]]2771[[package]]
2772name = "fp-evm-mapping"2772name = "fp-evm-mapping"
2773version = "0.1.0"2773version = "0.1.0"
2774source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14"2774source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#ef8d2809ed05da0664e9b43cb87436451295b634"
2775dependencies = [2775dependencies = [
2776 "frame-support",2776 "frame-support",
2777 "sp-core",2777 "sp-core",
2780[[package]]2780[[package]]
2781name = "fp-rpc"2781name = "fp-rpc"
2782version = "3.0.0-dev"2782version = "3.0.0-dev"
2783source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14"2783source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#ef8d2809ed05da0664e9b43cb87436451295b634"
2784dependencies = [2784dependencies = [
2785 "ethereum 0.14.0",2785 "ethereum 0.14.0",
2786 "ethereum-types 0.14.1",2786 "ethereum-types 0.14.1",
2797[[package]]2797[[package]]
2798name = "fp-self-contained"2798name = "fp-self-contained"
2799version = "1.0.0-dev"2799version = "1.0.0-dev"
2800source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14"2800source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#ef8d2809ed05da0664e9b43cb87436451295b634"
2801dependencies = [2801dependencies = [
2802 "ethereum 0.14.0",2802 "ethereum 0.14.0",
2803 "frame-support",2803 "frame-support",
2810[[package]]2810[[package]]
2811name = "fp-storage"2811name = "fp-storage"
2812version = "2.0.0"2812version = "2.0.0"
2813source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14"2813source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#ef8d2809ed05da0664e9b43cb87436451295b634"
2814dependencies = [2814dependencies = [
2815 "parity-scale-codec 3.2.1",2815 "parity-scale-codec 3.2.1",
2816 "serde",2816 "serde",
5687[[package]]5687[[package]]
5688name = "pallet-base-fee"5688name = "pallet-base-fee"
5689version = "1.0.0"5689version = "1.0.0"
5690source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14"5690source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#ef8d2809ed05da0664e9b43cb87436451295b634"
5691dependencies = [5691dependencies = [
5692 "fp-evm",5692 "fp-evm",
5693 "frame-support",5693 "frame-support",
5952[[package]]5952[[package]]
5953name = "pallet-ethereum"5953name = "pallet-ethereum"
5954version = "4.0.0-dev"5954version = "4.0.0-dev"
5955source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14"5955source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#ef8d2809ed05da0664e9b43cb87436451295b634"
5956dependencies = [5956dependencies = [
5957 "ethereum 0.14.0",5957 "ethereum 0.14.0",
5958 "ethereum-types 0.14.1",5958 "ethereum-types 0.14.1",
5980[[package]]5980[[package]]
5981name = "pallet-evm"5981name = "pallet-evm"
5982version = "6.0.0-dev"5982version = "6.0.0-dev"
5983source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14"5983source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#ef8d2809ed05da0664e9b43cb87436451295b634"
5984dependencies = [5984dependencies = [
5985 "environmental",5985 "environmental",
5986 "evm",5986 "evm",
6066[[package]]6066[[package]]
6067name = "pallet-evm-precompile-simple"6067name = "pallet-evm-precompile-simple"
6068version = "2.0.0-dev"6068version = "2.0.0-dev"
6069source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#cf1894629c7df1c4dafe58aa773627a3d940da14"6069source = "git+https://github.com/uniquenetwork/frontier?branch=unique-polkadot-v0.9.36#ef8d2809ed05da0664e9b43cb87436451295b634"
6070dependencies = [6070dependencies = [
6071 "fp-evm",6071 "fp-evm",
6072 "ripemd",6072 "ripemd",
modifiedcrates/evm-coder/procedural/src/solidity_interface.rsdiffbeforeafterboth
811 let list = generics_list(gen);811 let list = generics_list(gen);
812 quote! { <#list> }812 quote! { <#list> }
813}813}
814fn generics_stub(gen: &Generics) -> proc_macro2::TokenStream {
815 if gen.params.is_empty() {
816 return quote! {};
817 }
818 let params = (0..gen.params.len()).map(|_| quote! {()});
819 quote! {<#(#params,)*>}
820}
814fn generics_data(gen: &Generics) -> proc_macro2::TokenStream {821fn generics_data(gen: &Generics) -> proc_macro2::TokenStream {
815 let list = generics_list(gen);822 let list = generics_list(gen);
816 if gen.params.len() == 1 {823 if gen.params.len() == 1 {
866 let generics = self.generics;873 let generics = self.generics;
867 let gen_ref = generics_reference(&generics);874 let gen_ref = generics_reference(&generics);
868 let gen_data = generics_data(&generics);875 let gen_data = generics_data(&generics);
876 let gen_stub = generics_stub(&generics);
869 let gen_where = &generics.where_clause;877 let gen_where = &generics.where_clause;
870878
871 let call_sub = self879 let call_sub = self
936 let solidity_events_idents = self.info.events.0.iter().map(|is| is.name.clone());944 let solidity_events_idents = self.info.events.0.iter().map(|is| is.name.clone());
937 let docs = &self.docs;945 let docs = &self.docs;
946
947 let expect_selector = self.info.expect_selector.map(|s| {
948 quote! {
949 const _: () = assert!(#s == u32::from_be_bytes(<#call_name #gen_stub>::interface_id()), "selector mismatch, review contained function selectors");
950 }
951 });
938952
939 quote! {953 quote! {
940 #(954 #(
953 )*967 )*
954 }968 }
969
970 #expect_selector
971
955 impl #gen_ref #call_name #gen_ref {972 impl #gen_ref #call_name #gen_ref {
956 #(973 #(
957 #consts974 #consts
958 )*975 )*
959 /// Return this call ERC165 selector976 /// Return this call ERC165 selector
960 pub fn interface_id() -> ::evm_coder::types::bytes4 {977 pub const fn interface_id() -> ::evm_coder::types::bytes4 {
961 let mut interface_id = 0;978 let mut interface_id = 0;
962 #(#interface_id)*979 #(#interface_id)*
963 #(#inline_interface_id)*980 #(#inline_interface_id)*
modifiedpallets/nonfungible/src/erc.rsdiffbeforeafterboth
525 Ok(<Pallet<T>>::allowance_for_all(self, &owner, &operator))525 Ok(<Pallet<T>>::allowance_for_all(self, &owner, &operator))
526 }526 }
527
528 /// @notice Returns collection helper contract address
529 fn collection_helper_address(&self) -> Result<address> {
530 Ok(T::ContractAddress::get())
531 }
532}527}
533528
534/// @title ERC721 Token that can be irreversibly burned (destroyed).529/// @title ERC721 Token that can be irreversibly burned (destroyed).
1059 Ok(token_id.into())1054 Ok(token_id.into())
1060 }1055 }
1056
1057 /// @notice Returns collection helper contract address
1058 fn collection_helper_address(&self) -> Result<address> {
1059 Ok(T::ContractAddress::get())
1060 }
1061}1061}
10621062
1063#[solidity_interface(1063#[solidity_interface(
modifiedpallets/nonfungible/src/stubs/UniqueNFT.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/nonfungible/src/stubs/UniqueNFT.soldiffbeforeafterboth
785}785}
786786
787/// @title Unique extensions for ERC721.787/// @title Unique extensions for ERC721.
788/// @dev the ERC-165 identifier for this interface is 0x0e48fdb4788/// @dev the ERC-165 identifier for this interface is 0x16de3152
789contract ERC721UniqueExtensions is Dummy, ERC165 {789contract ERC721UniqueExtensions is Dummy, ERC165 {
790 /// @notice A descriptive name for a collection of NFTs in this contract790 /// @notice A descriptive name for a collection of NFTs in this contract
791 /// @dev EVM selector for this function is: 0x06fdde03,791 /// @dev EVM selector for this function is: 0x06fdde03,
987 return 0;987 return 0;
988 }988 }
989
990 /// @notice Returns collection helper contract address
991 /// @dev EVM selector for this function is: 0x1896cce6,
992 /// or in textual repr: collectionHelperAddress()
993 function collectionHelperAddress() public view returns (address) {
994 require(false, stub_error);
995 dummy;
996 return 0x0000000000000000000000000000000000000000;
997 }
989}998}
990999
991/// @dev anonymous struct1000/// @dev anonymous struct
10431052
1044/// @title ERC-721 Non-Fungible Token Standard1053/// @title ERC-721 Non-Fungible Token Standard
1045/// @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md1054/// @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
1046/// @dev the ERC-165 identifier for this interface is 0x983a942b1055/// @dev the ERC-165 identifier for this interface is 0x80ac58cd
1047contract ERC721 is Dummy, ERC165, ERC721Events {1056contract ERC721 is Dummy, ERC165, ERC721Events {
1048 /// @notice Count all NFTs assigned to an owner1057 /// @notice Count all NFTs assigned to an owner
1049 /// @dev NFTs assigned to the zero address are considered invalid, and this1058 /// @dev NFTs assigned to the zero address are considered invalid, and this
1177 return false;1186 return false;
1178 }1187 }
1179
1180 /// @notice Returns collection helper contract address
1181 /// @dev EVM selector for this function is: 0x1896cce6,
1182 /// or in textual repr: collectionHelperAddress()
1183 function collectionHelperAddress() public view returns (address) {
1184 require(false, stub_error);
1185 dummy;
1186 return 0x0000000000000000000000000000000000000000;
1187 }
1188}1188}
11891189
1190contract UniqueNFT is1190contract UniqueNFT is
modifiedpallets/refungible/src/erc.rsdiffbeforeafterboth
295 MintingFinished {},295 MintingFinished {},
296}296}
297297
298/// @title ERC-721 Non-Fungible Token Standard, optional metadata extension
299/// @dev See https://eips.ethereum.org/EIPS/eip-721
298#[solidity_interface(name = ERC721Metadata)]300#[solidity_interface(name = ERC721Metadata, expect_selector = 0x5b5e139f)]
299impl<T: Config> RefungibleHandle<T>301impl<T: Config> RefungibleHandle<T>
300where302where
301 T::AccountId: From<[u8; 32]> + AsRef<[u8; 32]>,303 T::AccountId: From<[u8; 32]> + AsRef<[u8; 32]>,
364366
365/// @title ERC-721 Non-Fungible Token Standard, optional enumeration extension367/// @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
366/// @dev See https://eips.ethereum.org/EIPS/eip-721368/// @dev See https://eips.ethereum.org/EIPS/eip-721
367#[solidity_interface(name = ERC721Enumerable)]369#[solidity_interface(name = ERC721Enumerable, expect_selector = 0x780e9d63)]
368impl<T: Config> RefungibleHandle<T> {370impl<T: Config> RefungibleHandle<T> {
369 /// @notice Enumerate valid RFTs371 /// @notice Enumerate valid RFTs
370 /// @param index A counter less than `totalSupply()`372 /// @param index A counter less than `totalSupply()`
391393
392/// @title ERC-721 Non-Fungible Token Standard394/// @title ERC-721 Non-Fungible Token Standard
393/// @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md395/// @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
394#[solidity_interface(name = ERC721, events(ERC721Events))]396#[solidity_interface(name = ERC721, events(ERC721Events), expect_selector = 0x80ac58cd)]
395impl<T: Config> RefungibleHandle<T> {397impl<T: Config> RefungibleHandle<T> {
396 /// @notice Count all RFTs assigned to an owner398 /// @notice Count all RFTs assigned to an owner
397 /// @dev RFTs assigned to the zero address are considered invalid, and this399 /// @dev RFTs assigned to the zero address are considered invalid, and this
422 }424 }
423425
424 /// @dev Not implemented426 /// @dev Not implemented
427 #[solidity(rename_selector = "safeTransferFrom")]
425 fn safe_transfer_from_with_data(428 fn safe_transfer_from_with_data(
426 &mut self,429 &mut self,
427 _from: address,430 _from: address,
434 }437 }
435438
436 /// @dev Not implemented439 /// @dev Not implemented
440 #[solidity(rename_selector = "safeTransferFrom")]
437 fn safe_transfer_from(441 fn safe_transfer_from(
438 &mut self,442 &mut self,
439 _from: address,443 _from: address,
518 Ok(<Pallet<T>>::allowance_for_all(self, &owner, &operator))522 Ok(<Pallet<T>>::allowance_for_all(self, &owner, &operator))
519 }523 }
520
521 /// @notice Returns collection helper contract address
522 fn collection_helper_address(&self) -> Result<address> {
523 Ok(T::ContractAddress::get())
524 }
525}524}
526525
527/// Returns amount of pieces of `token` that `owner` have526/// Returns amount of pieces of `token` that `owner` have
1117 ))1116 ))
1118 }1117 }
1118
1119 /// @notice Returns collection helper contract address
1120 fn collection_helper_address(&self) -> Result<address> {
1121 Ok(T::ContractAddress::get())
1122 }
1119}1123}
11201124
1121#[solidity_interface(1125#[solidity_interface(
modifiedpallets/refungible/src/stubs/UniqueRefungible.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/refungible/src/stubs/UniqueRefungible.soldiffbeforeafterboth
641 TransferEnabled641 TransferEnabled
642}642}
643643
644/// @title ERC-721 Non-Fungible Token Standard, optional metadata extension
645/// @dev See https://eips.ethereum.org/EIPS/eip-721
644/// @dev the ERC-165 identifier for this interface is 0x5b5e139f646/// @dev the ERC-165 identifier for this interface is 0x5b5e139f
645contract ERC721Metadata is Dummy, ERC165 {647contract ERC721Metadata is Dummy, ERC165 {
646 // /// @notice A descriptive name for a collection of NFTs in this contract648 // /// @notice A descriptive name for a collection of NFTs in this contract
783}785}
784786
785/// @title Unique extensions for ERC721.787/// @title Unique extensions for ERC721.
786/// @dev the ERC-165 identifier for this interface is 0xabf30dc2788/// @dev the ERC-165 identifier for this interface is 0xb365c124
787contract ERC721UniqueExtensions is Dummy, ERC165 {789contract ERC721UniqueExtensions is Dummy, ERC165 {
788 /// @notice A descriptive name for a collection of NFTs in this contract790 /// @notice A descriptive name for a collection of NFTs in this contract
789 /// @dev EVM selector for this function is: 0x06fdde03,791 /// @dev EVM selector for this function is: 0x06fdde03,
986 return 0x0000000000000000000000000000000000000000;988 return 0x0000000000000000000000000000000000000000;
987 }989 }
990
991 /// @notice Returns collection helper contract address
992 /// @dev EVM selector for this function is: 0x1896cce6,
993 /// or in textual repr: collectionHelperAddress()
994 function collectionHelperAddress() public view returns (address) {
995 require(false, stub_error);
996 dummy;
997 return 0x0000000000000000000000000000000000000000;
998 }
988}999}
9891000
990/// @dev anonymous struct1001/// @dev anonymous struct
10421053
1043/// @title ERC-721 Non-Fungible Token Standard1054/// @title ERC-721 Non-Fungible Token Standard
1044/// @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md1055/// @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
1045/// @dev the ERC-165 identifier for this interface is 0x4016cd871056/// @dev the ERC-165 identifier for this interface is 0x80ac58cd
1046contract ERC721 is Dummy, ERC165, ERC721Events {1057contract ERC721 is Dummy, ERC165, ERC721Events {
1047 /// @notice Count all RFTs assigned to an owner1058 /// @notice Count all RFTs assigned to an owner
1048 /// @dev RFTs assigned to the zero address are considered invalid, and this1059 /// @dev RFTs assigned to the zero address are considered invalid, and this
1075 }1086 }
10761087
1077 /// @dev Not implemented1088 /// @dev Not implemented
1078 /// @dev EVM selector for this function is: 0x60a11672,1089 /// @dev EVM selector for this function is: 0xb88d4fde,
1079 /// or in textual repr: safeTransferFromWithData(address,address,uint256,bytes)1090 /// or in textual repr: safeTransferFrom(address,address,uint256,bytes)
1080 function safeTransferFromWithData(1091 function safeTransferFrom(
1081 address from,1092 address from,
1082 address to,1093 address to,
1083 uint256 tokenId,1094 uint256 tokenId,
1174 return false;1185 return false;
1175 }1186 }
1176
1177 /// @notice Returns collection helper contract address
1178 /// @dev EVM selector for this function is: 0x1896cce6,
1179 /// or in textual repr: collectionHelperAddress()
1180 function collectionHelperAddress() public view returns (address) {
1181 require(false, stub_error);
1182 dummy;
1183 return 0x0000000000000000000000000000000000000000;
1184 }
1185}1187}
11861188
1187contract UniqueRefungible is1189contract UniqueRefungible is
modifiedruntime/common/ethereum/sponsoring/refungible.rsdiffbeforeafterboth
140 | OwnerOf { .. }140 | OwnerOf { .. }
141 | GetApproved { .. }141 | GetApproved { .. }
142 | IsApprovedForAll { .. }142 | IsApprovedForAll { .. } => None,
143 | CollectionHelperAddress => None,
144143
145 // Not sponsored144 // Not sponsored
146 SafeTransferFromWithData { .. }145 SafeTransferFromWithData { .. }
231 | Properties { .. }230 | Properties { .. }
232 | NextTokenId231 | NextTokenId
233 | TokenContractAddress { .. } => None,232 | TokenContractAddress { .. }
233 | CollectionHelperAddress => None,
234234
235 // Not sponsored235 // Not sponsored
236 BurnFrom { .. }236 BurnFrom { .. }
modifiedruntime/common/runtime_apis.rsdiffbeforeafterboth
451 }451 }
452452
453 fn account_code_at(address: H160) -> Vec<u8> {453 fn account_code_at(address: H160) -> Vec<u8> {
454 use pallet_evm::OnMethodCall;
455 <Runtime as pallet_evm::Config>::OnMethodCall::get_code(&address)
454 EVM::account_codes(address)456 .unwrap_or_else(|| EVM::account_codes(address))
455 }457 }
456458
457 fn author() -> H160 {459 fn author() -> H160 {
modifiedtests/src/eth/abi/nonFungible.jsondiffbeforeafterboth
49 "name": "ApprovalForAll",49 "name": "ApprovalForAll",
50 "type": "event"50 "type": "event"
51 },51 },
52 {
53 "anonymous": false,
54 "inputs": [],
55 "name": "MintingFinished",
56 "type": "event"
57 },
52 {58 {
53 "anonymous": false,59 "anonymous": false,
54 "inputs": [60 "inputs": [
416 "stateMutability": "view",422 "stateMutability": "view",
417 "type": "function"423 "type": "function"
418 },424 },
425 {
426 "inputs": [],
427 "name": "finishMinting",
428 "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
429 "stateMutability": "nonpayable",
430 "type": "function"
431 },
419 {432 {
420 "inputs": [433 "inputs": [
421 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }434 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
502 "stateMutability": "nonpayable",515 "stateMutability": "nonpayable",
503 "type": "function"516 "type": "function"
504 },517 },
518 {
519 "inputs": [],
520 "name": "mintingFinished",
521 "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
522 "stateMutability": "view",
523 "type": "function"
524 },
505 {525 {
506 "inputs": [],526 "inputs": [],
507 "name": "name",527 "name": "name",
modifiedtests/src/eth/abi/reFungible.jsondiffbeforeafterboth
49 "name": "ApprovalForAll",49 "name": "ApprovalForAll",
50 "type": "event"50 "type": "event"
51 },51 },
52 {
53 "anonymous": false,
54 "inputs": [],
55 "name": "MintingFinished",
56 "type": "event"
57 },
52 {58 {
53 "anonymous": false,59 "anonymous": false,
54 "inputs": [60 "inputs": [
398 "stateMutability": "view",404 "stateMutability": "view",
399 "type": "function"405 "type": "function"
400 },406 },
407 {
408 "inputs": [],
409 "name": "finishMinting",
410 "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
411 "stateMutability": "nonpayable",
412 "type": "function"
413 },
401 {414 {
402 "inputs": [415 "inputs": [
403 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }416 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
484 "stateMutability": "nonpayable",497 "stateMutability": "nonpayable",
485 "type": "function"498 "type": "function"
486 },499 },
500 {
501 "inputs": [],
502 "name": "mintingFinished",
503 "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
504 "stateMutability": "view",
505 "type": "function"
506 },
487 {507 {
488 "inputs": [],508 "inputs": [],
489 "name": "name",509 "name": "name",
596 { "internalType": "uint256", "name": "tokenId", "type": "uint256" },616 { "internalType": "uint256", "name": "tokenId", "type": "uint256" },
597 { "internalType": "bytes", "name": "data", "type": "bytes" }617 { "internalType": "bytes", "name": "data", "type": "bytes" }
598 ],618 ],
599 "name": "safeTransferFromWithData",619 "name": "safeTransferFrom",
600 "outputs": [],620 "outputs": [],
601 "stateMutability": "nonpayable",621 "stateMutability": "nonpayable",
602 "type": "function"622 "type": "function"
modifiedtests/src/eth/abi/reFungibleToken.jsondiffbeforeafterboth
96 "stateMutability": "view",96 "stateMutability": "view",
97 "type": "function"97 "type": "function"
98 },98 },
99 {
100 "inputs": [
101 { "internalType": "address", "name": "from", "type": "address" },
102 { "internalType": "uint256", "name": "amount", "type": "uint256" }
103 ],
104 "name": "burnFrom",
105 "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
106 "stateMutability": "nonpayable",
107 "type": "function"
108 },
99 {109 {
100 "inputs": [110 "inputs": [
101 {111 {
modifiedtests/src/eth/api/UniqueNFT.soldiffbeforeafterboth
536}536}
537537
538/// @title Unique extensions for ERC721.538/// @title Unique extensions for ERC721.
539/// @dev the ERC-165 identifier for this interface is 0x0e48fdb4539/// @dev the ERC-165 identifier for this interface is 0x16de3152
540interface ERC721UniqueExtensions is Dummy, ERC165 {540interface ERC721UniqueExtensions is Dummy, ERC165 {
541 /// @notice A descriptive name for a collection of NFTs in this contract541 /// @notice A descriptive name for a collection of NFTs in this contract
542 /// @dev EVM selector for this function is: 0x06fdde03,542 /// @dev EVM selector for this function is: 0x06fdde03,
662 /// or in textual repr: mintCross((address,uint256),(string,bytes)[])662 /// or in textual repr: mintCross((address,uint256),(string,bytes)[])
663 function mintCross(CrossAddress memory to, Property[] memory properties) external returns (uint256);663 function mintCross(CrossAddress memory to, Property[] memory properties) external returns (uint256);
664
665 /// @notice Returns collection helper contract address
666 /// @dev EVM selector for this function is: 0x1896cce6,
667 /// or in textual repr: collectionHelperAddress()
668 function collectionHelperAddress() external view returns (address);
664}669}
665670
666/// @dev anonymous struct671/// @dev anonymous struct
703708
704/// @title ERC-721 Non-Fungible Token Standard709/// @title ERC-721 Non-Fungible Token Standard
705/// @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md710/// @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
706/// @dev the ERC-165 identifier for this interface is 0x983a942b711/// @dev the ERC-165 identifier for this interface is 0x80ac58cd
707interface ERC721 is Dummy, ERC165, ERC721Events {712interface ERC721 is Dummy, ERC165, ERC721Events {
708 /// @notice Count all NFTs assigned to an owner713 /// @notice Count all NFTs assigned to an owner
709 /// @dev NFTs assigned to the zero address are considered invalid, and this714 /// @dev NFTs assigned to the zero address are considered invalid, and this
787 /// or in textual repr: isApprovedForAll(address,address)792 /// or in textual repr: isApprovedForAll(address,address)
788 function isApprovedForAll(address owner, address operator) external view returns (bool);793 function isApprovedForAll(address owner, address operator) external view returns (bool);
789
790 /// @notice Returns collection helper contract address
791 /// @dev EVM selector for this function is: 0x1896cce6,
792 /// or in textual repr: collectionHelperAddress()
793 function collectionHelperAddress() external view returns (address);
794}794}
795795
796interface UniqueNFT is796interface UniqueNFT is
modifiedtests/src/eth/api/UniqueRefungible.soldiffbeforeafterboth
441 TransferEnabled441 TransferEnabled
442}442}
443443
444/// @title ERC-721 Non-Fungible Token Standard, optional metadata extension
445/// @dev See https://eips.ethereum.org/EIPS/eip-721
444/// @dev the ERC-165 identifier for this interface is 0x5b5e139f446/// @dev the ERC-165 identifier for this interface is 0x5b5e139f
445interface ERC721Metadata is Dummy, ERC165 {447interface ERC721Metadata is Dummy, ERC165 {
446 // /// @notice A descriptive name for a collection of NFTs in this contract448 // /// @notice A descriptive name for a collection of NFTs in this contract
534}536}
535537
536/// @title Unique extensions for ERC721.538/// @title Unique extensions for ERC721.
537/// @dev the ERC-165 identifier for this interface is 0xabf30dc2539/// @dev the ERC-165 identifier for this interface is 0xb365c124
538interface ERC721UniqueExtensions is Dummy, ERC165 {540interface ERC721UniqueExtensions is Dummy, ERC165 {
539 /// @notice A descriptive name for a collection of NFTs in this contract541 /// @notice A descriptive name for a collection of NFTs in this contract
540 /// @dev EVM selector for this function is: 0x06fdde03,542 /// @dev EVM selector for this function is: 0x06fdde03,
661 /// or in textual repr: tokenContractAddress(uint256)663 /// or in textual repr: tokenContractAddress(uint256)
662 function tokenContractAddress(uint256 token) external view returns (address);664 function tokenContractAddress(uint256 token) external view returns (address);
665
666 /// @notice Returns collection helper contract address
667 /// @dev EVM selector for this function is: 0x1896cce6,
668 /// or in textual repr: collectionHelperAddress()
669 function collectionHelperAddress() external view returns (address);
663}670}
664671
665/// @dev anonymous struct672/// @dev anonymous struct
702709
703/// @title ERC-721 Non-Fungible Token Standard710/// @title ERC-721 Non-Fungible Token Standard
704/// @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md711/// @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
705/// @dev the ERC-165 identifier for this interface is 0x4016cd87712/// @dev the ERC-165 identifier for this interface is 0x80ac58cd
706interface ERC721 is Dummy, ERC165, ERC721Events {713interface ERC721 is Dummy, ERC165, ERC721Events {
707 /// @notice Count all RFTs assigned to an owner714 /// @notice Count all RFTs assigned to an owner
708 /// @dev RFTs assigned to the zero address are considered invalid, and this715 /// @dev RFTs assigned to the zero address are considered invalid, and this
725 function ownerOf(uint256 tokenId) external view returns (address);732 function ownerOf(uint256 tokenId) external view returns (address);
726733
727 /// @dev Not implemented734 /// @dev Not implemented
728 /// @dev EVM selector for this function is: 0x60a11672,735 /// @dev EVM selector for this function is: 0xb88d4fde,
729 /// or in textual repr: safeTransferFromWithData(address,address,uint256,bytes)736 /// or in textual repr: safeTransferFrom(address,address,uint256,bytes)
730 function safeTransferFromWithData(737 function safeTransferFrom(
731 address from,738 address from,
732 address to,739 address to,
733 uint256 tokenId,740 uint256 tokenId,
784 /// or in textual repr: isApprovedForAll(address,address)791 /// or in textual repr: isApprovedForAll(address,address)
785 function isApprovedForAll(address owner, address operator) external view returns (bool);792 function isApprovedForAll(address owner, address operator) external view returns (bool);
786
787 /// @notice Returns collection helper contract address
788 /// @dev EVM selector for this function is: 0x1896cce6,
789 /// or in textual repr: collectionHelperAddress()
790 function collectionHelperAddress() external view returns (address);
791}793}
792794
793interface UniqueRefungible is795interface UniqueRefungible is