git.delta.rocks / unique-network / refs/commits / abb3f22c0e4c

difftreelog

Contract update

str-mv2020-07-23parent: #4fc7c3c.patch.diff
in: master

2 files changed

modifiedsmart_contract/ink-types-node-runtime/.gitignorediffbeforeafterboth
--- a/smart_contract/ink-types-node-runtime/.gitignore
+++ b/smart_contract/ink-types-node-runtime/.gitignore
@@ -1,6 +1,6 @@
 # Ignore build artifacts
 /target/
-/**/target/
+/examples/**/target/
 
 # Ignore backup files creates by cargo fmt.
 **/*.rs.bk
@@ -13,4 +13,4 @@
 **/.vscode/**
 
 # Ignore history files.
-**/.history/**
+**/.history/**
\ No newline at end of file
modifiedsmart_contract/ink-types-node-runtime/calls/lib.rsdiffbeforeafterboth
before · smart_contract/ink-types-node-runtime/calls/lib.rs
1#![cfg_attr(not(feature = "std"), no_std)]23use ink_lang as ink;45#[ink::contract(version = "0.1.0", env = NodeRuntimeTypes)]6mod calls {7    use ink_core::env;8    use ink_prelude::vec::Vec;9    use ink_prelude::*;10    use ink_types_node_runtime::{calls as runtime_calls, NodeRuntimeTypes};11    use scale::{12        Decode,13        Encode,14    };1516    #[derive(Encode, Decode)]17    pub struct NftItemType {18        pub collection: u64,19        pub owner: AccountId,20        pub data: Vec<u8>,21    }2223    /// This simple dummy contract dispatches substrate runtime calls24    #[ink(storage)]25    struct Calls {}2627    impl Calls {28        #[ink(constructor)]29        fn new(&mut self) {}3031        #[ink(message)]32        fn transfer(&self, collection_id: u64, item_id: u64, new_owner: AccountId) {33            env::println(&format!(34                "transfer invoke_runtime params {:?}, {:?}, {:?} ",35                collection_id, item_id, new_owner36            ));3738            let transfer_call = runtime_calls::transfer(collection_id, item_id, new_owner);39            // dispatch the call to the runtime40            let result = self.env().invoke_runtime(&transfer_call);4142            // report result to console43            // NOTE: println should only be used on a development chain)44            env::println(&format!("transfer invoke_runtime result {:?}", result));45        }4647        // SafeTransfer4849        #[ink(message)]50        fn approve(&self, approved: AccountId, collection_id: u64, item_id: u64) {51            env::println(&format!(52                "approve invoke_runtime params {:?}, {:?}, {:?} ",53                approved, collection_id, item_id54            ));5556            let approve_call = runtime_calls::approve(approved, collection_id, item_id);57            // dispatch the call to the runtime58            let result = self.env().invoke_runtime(&approve_call);5960            // report result to console61            // NOTE: println should only be used on a development chain)62            env::println(&format!("approve invoke_runtime result {:?}", result));63        }6465        #[ink(message)]66        fn get_approved(&self, collection_id: u64, item_id: u64) -> Vec<AccountId> {67            let mut key = vec![68                // Precomputed: Twox128("Nft")69                244, 63, 251, 230, 30, 244, 104, 116, 157, 54, 23, 172, 26, 99, 196, 183,70                // Precomputed: Twox128("ApprovedList")71                86, 163, 236, 207, 221, 111, 252, 227, 254, 40, 142, 38, 40, 224, 192, 18,72            ];7374            let key_ext = vec![75                146, 214, 40, 117, 20, 27, 72, 25, 232, 204, 175, 194, 112, 244, 140, 100,76            ];77            key.extend_from_slice(&key_ext);7879            // collection id 80            let mut collection_bytes: Vec<u8> =  collection_id.to_be_bytes().iter().cloned().collect();81            collection_bytes.reverse();82            key.extend_from_slice(&collection_bytes.as_slice());8384             // item id 85             let mut item_bytes: Vec<u8> =  item_id.to_be_bytes().iter().cloned().collect();86             item_bytes.reverse();87             key.extend_from_slice(&item_bytes.as_slice());           8889            // fetch from runtime storage90            let result = self.env().get_runtime_storage::<Vec<AccountId>>(&key[..]);91 92            match result {93                Some(Ok(accounts)) => { 94                    env::println(&format!("get_approved result {:?}", accounts));95                    accounts 96                },97                Some(Err(err)) => {98                    env::println(&format!("Error reading {:?}", err));99                    vec![]100                }101                None => {102                    env::println(&format!("No data at key {:?}", key));103                    vec![]104                }105            }106        }107108        #[ink(message)]109        fn get_test(&self) -> bool {110            true111        }112113        #[ink(message)]114        fn transfer_from(&self, collection_id: u64, item_id: u64, new_owner: AccountId) {115            env::println(&format!(116                "transfer_from invoke_runtime params {:?}, {:?}, {:?} ",117                collection_id, item_id, new_owner118            ));119120            let transfer_from_call =121                runtime_calls::transfer_from(collection_id, item_id, new_owner);122            // dispatch the call to the runtime123            let result = self.env().invoke_runtime(&transfer_from_call);124125            // report result to console126            // NOTE: println should only be used on a development chain)127            env::println(&format!("transfer_from invoke_runtime result {:?}", result));128        }129130        // SafeTransferFrom131132        #[ink(message)]133        fn create_item(&self, collection_id: u64, properties: Vec<u8>) {134            env::println(&format!(135                "create_item invoke_runtime params {:?}, {:?} ",136                collection_id, properties137            ));138139            let create_item_call = runtime_calls::create_item(collection_id, properties);140            // dispatch the call to the runtime141            let result = self.env().invoke_runtime(&create_item_call);142143            // report result to console144            // NOTE: println should only be used on a development chain)145            env::println(&format!("create_item invoke_runtime result {:?}", result));146        }147148        #[ink(message)]149        fn burn_item(&self, collection_id: u64, item_id: u64) {150            env::println(&format!(151                "burn_item invoke_runtime params {:?}, {:?}",152                collection_id, item_id153            ));154155            let burn_item_call = runtime_calls::burn_item(collection_id, item_id);156            // dispatch the call to the runtime157            let result = self.env().invoke_runtime(&burn_item_call);158159            // report result to console160            // NOTE: println should only be used on a development chain)161            env::println(&format!("burn_item invoke_runtime result {:?}", result));162        }163164        // GetOwner165        #[ink(message)]166        fn get_owner(&self, collection_id: u64, token_id: u64) -> AccountId {167            let mut key = vec![168                // Precomputed: Twox128("Nft")169                244, 63, 251, 230, 30, 244, 104, 116, 157, 54, 23, 172, 26, 99, 196, 183,170                // Precomputed: Twox128("ItemList")171                116, 232, 175, 181, 237, 113, 149, 125, 139, 77, 55, 251, 115, 253, 29, 240,172            ];173174            let key_ext = vec![175                146, 214, 40, 117, 20, 27, 72, 25, 232, 204, 175, 194, 112, 244, 140, 100,176            ];177            key.extend_from_slice(&key_ext);178179            // collection id 180            let mut collection_bytes: Vec<u8> =  collection_id.to_be_bytes().iter().cloned().collect();181            collection_bytes.reverse();182            key.extend_from_slice(&collection_bytes.as_slice());183184             // token id 185             let mut token_bytes: Vec<u8> =  token_id.to_be_bytes().iter().cloned().collect();186             token_bytes.reverse();187             key.extend_from_slice(&token_bytes.as_slice());           188189            // fetch from runtime storage        190            let result = self.env().get_runtime_storage::<NftItemType>(&key[..]);191 192            match result {193                Some(Ok(item)) => { 194                    env::println(&format!("get_owner result {:?}", item.owner));195                    item.owner196                },197                Some(Err(err)) => {198                    env::println(&format!("Error reading {:?}", err));199                    AccountId::from([0u8; 32])200                }201                None => {202                    env::println(&format!("No data at key {:?}", key));203                    AccountId::from([0u8; 32])204                }205            }206        }207208        #[ink(message)]209        fn get_balance_of(&self, collection_id: u64, owner: AccountId) -> u64 {210            let mut key = vec![211                // Precomputed: Twox128("Nft")212                244, 63, 251, 230, 30, 244, 104, 116, 157, 54, 23, 172, 26, 99, 196, 183,213                // Precomputed: Twox128("Balance")214                78, 168, 234, 12, 1, 250, 164, 43, 110, 179, 68, 168, 92, 71, 179, 135,215            ];216217            let key_ext = vec![218                15, 97, 136, 0, 76, 187, 168, 28, 239, 85, 170, 23, 77, 81, 248, 159,219            ];220            key.extend_from_slice(&key_ext);221222            // collection id 223            let mut collection_bytes: Vec<u8> =  collection_id.to_be_bytes().iter().cloned().collect();224            collection_bytes.reverse();225            key.extend_from_slice(&collection_bytes.as_slice());226227             // owner228             key.extend_from_slice(&owner.encode());           229230            // fetch from runtime storage231            let result = self.env().get_runtime_storage::<u64>(&key[..]);232 233            match result {234                Some(Ok(balance)) => { 235                    env::println(&format!("get_balance_of result {:?}", balance));236                    balance237                },238                Some(Err(err)) => {239                    env::println(&format!("Error reading {:?}", err));240                    0241                }242                None => {243                    env::println(&format!("No data at key {:?}", key));244                    0245                }246            }247        }248    }249}
after · smart_contract/ink-types-node-runtime/calls/lib.rs
1#![cfg_attr(not(feature = "std"), no_std)]23use ink_lang as ink;45#[ink::contract(version = "0.1.0", env = NodeRuntimeTypes)]6mod calls {7    use ink_core::env;8    use ink_prelude::vec::Vec;9    use ink_prelude::*;10    use ink_types_node_runtime::{calls as runtime_calls, NodeRuntimeTypes};11    use scale::{12        Decode,13        Encode,14    };1516    #[derive(Encode, Decode)]17    pub struct NftItemType {18        pub collection: u64,19        pub owner: AccountId,20        pub data: Vec<u8>,21    }2223    /// This simple dummy contract dispatches substrate runtime calls24    #[ink(storage)]25    struct Calls {}2627    impl Calls {28        #[ink(constructor)]29        fn new(&mut self) {}3031        #[ink(message)]32        fn transfer(&self, collection_id: u64, item_id: u64, new_owner: AccountId) {33            env::println(&format!(34                "transfer invoke_runtime params {:?}, {:?}, {:?} ",35                collection_id, item_id, new_owner36            ));3738            let transfer_call = runtime_calls::transfer(collection_id, item_id, new_owner);39            // dispatch the call to the runtime40            let result = self.env().invoke_runtime(&transfer_call);4142            // report result to console43            // NOTE: println should only be used on a development chain)44            env::println(&format!("transfer invoke_runtime result {:?}", result));45        }4647        // SafeTransfer4849        #[ink(message)]50        fn approve(&self, approved: AccountId, collection_id: u64, item_id: u64) {51            env::println(&format!(52                "approve invoke_runtime params {:?}, {:?}, {:?} ",53                approved, collection_id, item_id54            ));5556            let approve_call = runtime_calls::approve(approved, collection_id, item_id);57            // dispatch the call to the runtime58            let result = self.env().invoke_runtime(&approve_call);5960            // report result to console61            // NOTE: println should only be used on a development chain)62            env::println(&format!("approve invoke_runtime result {:?}", result));63        }6465        #[ink(message)]66        fn get_approved(&self, collection_id: u64, item_id: u64) -> Vec<AccountId> {67            let mut key = vec![68                // Precomputed: Twox128("Nft")69                244, 63, 251, 230, 30, 244, 104, 116, 157, 54, 23, 172, 26, 99, 196, 183,70                // Precomputed: Twox128("ApprovedList")71                86, 163, 236, 207, 221, 111, 252, 227, 254, 40, 142, 38, 40, 224, 192, 18,72            ];7374            let key_ext = vec![75                146, 214, 40, 117, 20, 27, 72, 25, 232, 204, 175, 194, 112, 244, 140, 100,76            ];77            key.extend_from_slice(&key_ext);7879            // collection id 80            let mut collection_bytes: Vec<u8> =  collection_id.to_be_bytes().iter().cloned().collect();81            collection_bytes.reverse();82            key.extend_from_slice(&collection_bytes.as_slice());8384             // item id 85             let mut item_bytes: Vec<u8> =  item_id.to_be_bytes().iter().cloned().collect();86             item_bytes.reverse();87             key.extend_from_slice(&item_bytes.as_slice());           8889            // fetch from runtime storage90            let result = self.env().get_runtime_storage::<Vec<AccountId>>(&key[..]);91 92            match result {93                Some(Ok(accounts)) => { 94                    env::println(&format!("get_approved result {:?}", accounts));95                    accounts 96                },97                Some(Err(err)) => {98                    env::println(&format!("Error reading {:?}", err));99                    vec![]100                }101                None => {102                    env::println(&format!("No data at key {:?}", key));103                    vec![]104                }105            }106        }107108        #[ink(message)]109        fn transfer_from(&self, collection_id: u64, item_id: u64, new_owner: AccountId) {110            env::println(&format!(111                "transfer_from invoke_runtime params {:?}, {:?}, {:?} ",112                collection_id, item_id, new_owner113            ));114115            let transfer_from_call =116                runtime_calls::transfer_from(collection_id, item_id, new_owner);117            // dispatch the call to the runtime118            let result = self.env().invoke_runtime(&transfer_from_call);119120            // report result to console121            // NOTE: println should only be used on a development chain)122            env::println(&format!("transfer_from invoke_runtime result {:?}", result));123        }124125        // SafeTransferFrom126127        #[ink(message)]128        fn create_item(&self, collection_id: u64, properties: Vec<u8>) {129            env::println(&format!(130                "create_item invoke_runtime params {:?}, {:?} ",131                collection_id, properties132            ));133134            let create_item_call = runtime_calls::create_item(collection_id, properties);135            // dispatch the call to the runtime136            let result = self.env().invoke_runtime(&create_item_call);137138            // report result to console139            // NOTE: println should only be used on a development chain)140            env::println(&format!("create_item invoke_runtime result {:?}", result));141        }142143        #[ink(message)]144        fn burn_item(&self, collection_id: u64, item_id: u64) {145            env::println(&format!(146                "burn_item invoke_runtime params {:?}, {:?}",147                collection_id, item_id148            ));149150            let burn_item_call = runtime_calls::burn_item(collection_id, item_id);151            // dispatch the call to the runtime152            let result = self.env().invoke_runtime(&burn_item_call);153154            // report result to console155            // NOTE: println should only be used on a development chain)156            env::println(&format!("burn_item invoke_runtime result {:?}", result));157        }158159        // GetOwner160        #[ink(message)]161        fn get_owner(&self, collection_id: u64, token_id: u64) -> AccountId {162            let mut key = vec![163                // Precomputed: Twox128("Nft")164                244, 63, 251, 230, 30, 244, 104, 116, 157, 54, 23, 172, 26, 99, 196, 183,165                // Precomputed: Twox128("ItemList")166                116, 232, 175, 181, 237, 113, 149, 125, 139, 77, 55, 251, 115, 253, 29, 240,167            ];168169            let key_ext = vec![170                146, 214, 40, 117, 20, 27, 72, 25, 232, 204, 175, 194, 112, 244, 140, 100,171            ];172            key.extend_from_slice(&key_ext);173174            // collection id 175            let mut collection_bytes: Vec<u8> =  collection_id.to_be_bytes().iter().cloned().collect();176            collection_bytes.reverse();177            key.extend_from_slice(&collection_bytes.as_slice());178179             // token id 180             let mut token_bytes: Vec<u8> =  token_id.to_be_bytes().iter().cloned().collect();181             token_bytes.reverse();182             key.extend_from_slice(&token_bytes.as_slice());           183184            // fetch from runtime storage        185            let result = self.env().get_runtime_storage::<NftItemType>(&key[..]);186 187            match result {188                Some(Ok(item)) => { 189                    env::println(&format!("get_owner result {:?}", item.owner));190                    item.owner191                },192                Some(Err(err)) => {193                    env::println(&format!("Error reading {:?}", err));194                    AccountId::from([0u8; 32])195                }196                None => {197                    env::println(&format!("No data at key {:?}", key));198                    AccountId::from([0u8; 32])199                }200            }201        }202203        #[ink(message)]204        fn get_balance_of(&self, collection_id: u64, owner: AccountId) -> u64 {205            let mut key = vec![206                // Precomputed: Twox128("Nft")207                244, 63, 251, 230, 30, 244, 104, 116, 157, 54, 23, 172, 26, 99, 196, 183,208                // Precomputed: Twox128("Balance")209                78, 168, 234, 12, 1, 250, 164, 43, 110, 179, 68, 168, 92, 71, 179, 135,210            ];211212            let key_ext = vec![213                15, 97, 136, 0, 76, 187, 168, 28, 239, 85, 170, 23, 77, 81, 248, 159,214            ];215            key.extend_from_slice(&key_ext);216217            // collection id 218            let mut collection_bytes: Vec<u8> =  collection_id.to_be_bytes().iter().cloned().collect();219            collection_bytes.reverse();220            key.extend_from_slice(&collection_bytes.as_slice());221222             // owner223             key.extend_from_slice(&owner.encode());           224225            // fetch from runtime storage226            let result = self.env().get_runtime_storage::<u64>(&key[..]);227 228            match result {229                Some(Ok(balance)) => { 230                    env::println(&format!("get_balance_of result {:?}", balance));231                    balance232                },233                Some(Err(err)) => {234                    env::println(&format!("Error reading {:?}", err));235                    0236                }237                None => {238                    env::println(&format!("No data at key {:?}", key));239                    0240                }241            }242        }243    }244}