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

difftreelog

chore fix code review

Grigoriy Simonov2022-08-23parent: #cfc56ee.patch.diff
in: master

20 files changed

modifiedCargo.lockdiffbeforeafterboth
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -12473,7 +12473,7 @@
 
 [[package]]
 name = "up-common"
-version = "0.9.25"
+version = "0.9.27"
 dependencies = [
  "fp-rpc",
  "frame-support",
modifiedpallets/common/CHANGELOG.mddiffbeforeafterboth
--- a/pallets/common/CHANGELOG.md
+++ b/pallets/common/CHANGELOG.md
@@ -5,7 +5,7 @@
 ## [0.1.6] - 2022-08-16
 
 ### Added
--   New Ethereum API methods: changeOwner, changeOwnerSubstrate and verifyOwnerOrAdminSubstrate.
+-   New Ethereum API methods: changeOwner, changeOwner(Substrate) and verifyOwnerOrAdmin(Substrate).
 
 <!-- bureaucrate goes here -->
 ## [v0.1.5] 2022-08-16
modifiedpallets/common/src/erc.rsdiffbeforeafterboth
--- a/pallets/common/src/erc.rs
+++ b/pallets/common/src/erc.rs
@@ -420,6 +420,7 @@
 	///
 	/// @param user account to verify
 	/// @return "true" if account is the owner or admin
+	#[solidity(rename_selector = "verifyOwnerOrAdmin")]
 	fn verify_owner_or_admin_substrate(&self, user: uint256) -> Result<bool> {
 		let user = convert_substrate_address_to_cross_account_id::<T>(user);
 		Ok(self
@@ -455,6 +456,7 @@
 	///
 	/// @dev Owner can be changed only by current owner
 	/// @param newOwner new owner substrate account
+	#[solidity(rename_selector = "changeOwner")]
 	fn change_owner_substrate(&mut self, caller: caller, new_owner: uint256) -> Result<void> {
 		let caller = T::CrossAccountId::from_eth(caller);
 		let new_owner = convert_substrate_address_to_cross_account_id::<T>(new_owner);
modifiedpallets/common/src/lib.rsdiffbeforeafterboth
--- a/pallets/common/src/lib.rs
+++ b/pallets/common/src/lib.rs
@@ -204,7 +204,7 @@
 
 	/// Save collection to storage.
 	pub fn save(&self) -> DispatchResult {
-		<CollectionById<T>>::insert(self.id, self.collection.clone());
+		<CollectionById<T>>::insert(self.id, &self.collection);
 		Ok(())
 	}
 
modifiedpallets/evm-contract-helpers/src/stubs/ContractHelpers.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/fungible/src/stubs/UniqueFungible.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/fungible/src/stubs/UniqueFungible.soldiffbeforeafterboth
--- a/pallets/fungible/src/stubs/UniqueFungible.sol
+++ b/pallets/fungible/src/stubs/UniqueFungible.sol
@@ -31,7 +31,103 @@
 	);
 }
 
-// Selector: 07f76b0c
+// Selector: 79cc6790
+contract ERC20UniqueExtensions is Dummy, ERC165 {
+	// Selector: burnFrom(address,uint256) 79cc6790
+	function burnFrom(address from, uint256 amount) public returns (bool) {
+		require(false, stub_error);
+		from;
+		amount;
+		dummy = 0;
+		return false;
+	}
+}
+
+// Selector: 942e8b22
+contract ERC20 is Dummy, ERC165, ERC20Events {
+	// Selector: name() 06fdde03
+	function name() public view returns (string memory) {
+		require(false, stub_error);
+		dummy;
+		return "";
+	}
+
+	// Selector: symbol() 95d89b41
+	function symbol() public view returns (string memory) {
+		require(false, stub_error);
+		dummy;
+		return "";
+	}
+
+	// Selector: totalSupply() 18160ddd
+	function totalSupply() public view returns (uint256) {
+		require(false, stub_error);
+		dummy;
+		return 0;
+	}
+
+	// Selector: decimals() 313ce567
+	function decimals() public view returns (uint8) {
+		require(false, stub_error);
+		dummy;
+		return 0;
+	}
+
+	// Selector: balanceOf(address) 70a08231
+	function balanceOf(address owner) public view returns (uint256) {
+		require(false, stub_error);
+		owner;
+		dummy;
+		return 0;
+	}
+
+	// Selector: transfer(address,uint256) a9059cbb
+	function transfer(address to, uint256 amount) public returns (bool) {
+		require(false, stub_error);
+		to;
+		amount;
+		dummy = 0;
+		return false;
+	}
+
+	// Selector: transferFrom(address,address,uint256) 23b872dd
+	function transferFrom(
+		address from,
+		address to,
+		uint256 amount
+	) public returns (bool) {
+		require(false, stub_error);
+		from;
+		to;
+		amount;
+		dummy = 0;
+		return false;
+	}
+
+	// Selector: approve(address,uint256) 095ea7b3
+	function approve(address spender, uint256 amount) public returns (bool) {
+		require(false, stub_error);
+		spender;
+		amount;
+		dummy = 0;
+		return false;
+	}
+
+	// Selector: allowance(address,address) dd62ed3e
+	function allowance(address owner, address spender)
+		public
+		view
+		returns (uint256)
+	{
+		require(false, stub_error);
+		owner;
+		spender;
+		dummy;
+		return 0;
+	}
+}
+
+// Selector: f077f83e
 contract Collection is Dummy, ERC165 {
 	// Set collection property.
 	//
@@ -275,12 +371,8 @@
 	// @param user account to verify
 	// @return "true" if account is the owner or admin
 	//
-	// Selector: verifyOwnerOrAdminSubstrate(uint256) fe818e40
-	function verifyOwnerOrAdminSubstrate(uint256 user)
-		public
-		view
-		returns (bool)
-	{
+	// Selector: verifyOwnerOrAdmin(uint256) a83328e5
+	function verifyOwnerOrAdmin(uint256 user) public view returns (bool) {
 		require(false, stub_error);
 		user;
 		dummy;
@@ -315,107 +407,11 @@
 	// @dev Owner can be changed only by current owner
 	// @param newOwner new owner substrate account
 	//
-	// Selector: changeOwnerSubstrate(uint256) 337e2c60
-	function changeOwnerSubstrate(uint256 newOwner) public {
+	// Selector: changeOwner(uint256) 924c19f7
+	function changeOwner(uint256 newOwner) public {
 		require(false, stub_error);
 		newOwner;
-		dummy = 0;
-	}
-}
-
-// Selector: 79cc6790
-contract ERC20UniqueExtensions is Dummy, ERC165 {
-	// Selector: burnFrom(address,uint256) 79cc6790
-	function burnFrom(address from, uint256 amount) public returns (bool) {
-		require(false, stub_error);
-		from;
-		amount;
 		dummy = 0;
-		return false;
-	}
-}
-
-// Selector: 942e8b22
-contract ERC20 is Dummy, ERC165, ERC20Events {
-	// Selector: name() 06fdde03
-	function name() public view returns (string memory) {
-		require(false, stub_error);
-		dummy;
-		return "";
-	}
-
-	// Selector: symbol() 95d89b41
-	function symbol() public view returns (string memory) {
-		require(false, stub_error);
-		dummy;
-		return "";
-	}
-
-	// Selector: totalSupply() 18160ddd
-	function totalSupply() public view returns (uint256) {
-		require(false, stub_error);
-		dummy;
-		return 0;
-	}
-
-	// Selector: decimals() 313ce567
-	function decimals() public view returns (uint8) {
-		require(false, stub_error);
-		dummy;
-		return 0;
-	}
-
-	// Selector: balanceOf(address) 70a08231
-	function balanceOf(address owner) public view returns (uint256) {
-		require(false, stub_error);
-		owner;
-		dummy;
-		return 0;
-	}
-
-	// Selector: transfer(address,uint256) a9059cbb
-	function transfer(address to, uint256 amount) public returns (bool) {
-		require(false, stub_error);
-		to;
-		amount;
-		dummy = 0;
-		return false;
-	}
-
-	// Selector: transferFrom(address,address,uint256) 23b872dd
-	function transferFrom(
-		address from,
-		address to,
-		uint256 amount
-	) public returns (bool) {
-		require(false, stub_error);
-		from;
-		to;
-		amount;
-		dummy = 0;
-		return false;
-	}
-
-	// Selector: approve(address,uint256) 095ea7b3
-	function approve(address spender, uint256 amount) public returns (bool) {
-		require(false, stub_error);
-		spender;
-		amount;
-		dummy = 0;
-		return false;
-	}
-
-	// Selector: allowance(address,address) dd62ed3e
-	function allowance(address owner, address spender)
-		public
-		view
-		returns (uint256)
-	{
-		require(false, stub_error);
-		owner;
-		spender;
-		dummy;
-		return 0;
 	}
 }
 
modifiedpallets/nonfungible/src/stubs/UniqueNFT.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/nonfungible/src/stubs/UniqueNFT.soldiffbeforeafterboth
51 event MintingFinished();51 event MintingFinished();
52}52}
53
54// Selector: 07f76b0c
55contract Collection is Dummy, ERC165 {
56 // Set collection property.
57 //
58 // @param key Property key.
59 // @param value Propery value.
60 //
61 // Selector: setCollectionProperty(string,bytes) 2f073f66
62 function setCollectionProperty(string memory key, bytes memory value)
63 public
64 {
65 require(false, stub_error);
66 key;
67 value;
68 dummy = 0;
69 }
70
71 // Delete collection property.
72 //
73 // @param key Property key.
74 //
75 // Selector: deleteCollectionProperty(string) 7b7debce
76 function deleteCollectionProperty(string memory key) public {
77 require(false, stub_error);
78 key;
79 dummy = 0;
80 }
81
82 // Get collection property.
83 //
84 // @dev Throws error if key not found.
85 //
86 // @param key Property key.
87 // @return bytes The property corresponding to the key.
88 //
89 // Selector: collectionProperty(string) cf24fd6d
90 function collectionProperty(string memory key)
91 public
92 view
93 returns (bytes memory)
94 {
95 require(false, stub_error);
96 key;
97 dummy;
98 return hex"";
99 }
100
101 // Set the sponsor of the collection.
102 //
103 // @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.
104 //
105 // @param sponsor Address of the sponsor from whose account funds will be debited for operations with the contract.
106 //
107 // Selector: setCollectionSponsor(address) 7623402e
108 function setCollectionSponsor(address sponsor) public {
109 require(false, stub_error);
110 sponsor;
111 dummy = 0;
112 }
113
114 // Collection sponsorship confirmation.
115 //
116 // @dev After setting the sponsor for the collection, it must be confirmed with this function.
117 //
118 // Selector: confirmCollectionSponsorship() 3c50e97a
119 function confirmCollectionSponsorship() public {
120 require(false, stub_error);
121 dummy = 0;
122 }
123
124 // Set limits for the collection.
125 // @dev Throws error if limit not found.
126 // @param limit Name of the limit. Valid names:
127 // "accountTokenOwnershipLimit",
128 // "sponsoredDataSize",
129 // "sponsoredDataRateLimit",
130 // "tokenLimit",
131 // "sponsorTransferTimeout",
132 // "sponsorApproveTimeout"
133 // @param value Value of the limit.
134 //
135 // Selector: setCollectionLimit(string,uint32) 6a3841db
136 function setCollectionLimit(string memory limit, uint32 value) public {
137 require(false, stub_error);
138 limit;
139 value;
140 dummy = 0;
141 }
142
143 // Set limits for the collection.
144 // @dev Throws error if limit not found.
145 // @param limit Name of the limit. Valid names:
146 // "ownerCanTransfer",
147 // "ownerCanDestroy",
148 // "transfersEnabled"
149 // @param value Value of the limit.
150 //
151 // Selector: setCollectionLimit(string,bool) 993b7fba
152 function setCollectionLimit(string memory limit, bool value) public {
153 require(false, stub_error);
154 limit;
155 value;
156 dummy = 0;
157 }
158
159 // Get contract address.
160 //
161 // Selector: contractAddress() f6b4dfb4
162 function contractAddress() public view returns (address) {
163 require(false, stub_error);
164 dummy;
165 return 0x0000000000000000000000000000000000000000;
166 }
167
168 // Add collection admin by substrate address.
169 // @param new_admin Substrate administrator address.
170 //
171 // Selector: addCollectionAdminSubstrate(uint256) 5730062b
172 function addCollectionAdminSubstrate(uint256 newAdmin) public {
173 require(false, stub_error);
174 newAdmin;
175 dummy = 0;
176 }
177
178 // Remove collection admin by substrate address.
179 // @param admin Substrate administrator address.
180 //
181 // Selector: removeCollectionAdminSubstrate(uint256) 4048fcf9
182 function removeCollectionAdminSubstrate(uint256 admin) public {
183 require(false, stub_error);
184 admin;
185 dummy = 0;
186 }
187
188 // Add collection admin.
189 // @param new_admin Address of the added administrator.
190 //
191 // Selector: addCollectionAdmin(address) 92e462c7
192 function addCollectionAdmin(address newAdmin) public {
193 require(false, stub_error);
194 newAdmin;
195 dummy = 0;
196 }
197
198 // Remove collection admin.
199 //
200 // @param new_admin Address of the removed administrator.
201 //
202 // Selector: removeCollectionAdmin(address) fafd7b42
203 function removeCollectionAdmin(address admin) public {
204 require(false, stub_error);
205 admin;
206 dummy = 0;
207 }
208
209 // Toggle accessibility of collection nesting.
210 //
211 // @param enable If "true" degenerates to nesting: 'Owner' else to nesting: 'Disabled'
212 //
213 // Selector: setCollectionNesting(bool) 112d4586
214 function setCollectionNesting(bool enable) public {
215 require(false, stub_error);
216 enable;
217 dummy = 0;
218 }
219
220 // Toggle accessibility of collection nesting.
221 //
222 // @param enable If "true" degenerates to nesting: {OwnerRestricted: [1, 2, 3]} else to nesting: 'Disabled'
223 // @param collections Addresses of collections that will be available for nesting.
224 //
225 // Selector: setCollectionNesting(bool,address[]) 64872396
226 function setCollectionNesting(bool enable, address[] memory collections)
227 public
228 {
229 require(false, stub_error);
230 enable;
231 collections;
232 dummy = 0;
233 }
234
235 // Set the collection access method.
236 // @param mode Access mode
237 // 0 for Normal
238 // 1 for AllowList
239 //
240 // Selector: setCollectionAccess(uint8) 41835d4c
241 function setCollectionAccess(uint8 mode) public {
242 require(false, stub_error);
243 mode;
244 dummy = 0;
245 }
246
247 // Add the user to the allowed list.
248 //
249 // @param user Address of a trusted user.
250 //
251 // Selector: addToCollectionAllowList(address) 67844fe6
252 function addToCollectionAllowList(address user) public {
253 require(false, stub_error);
254 user;
255 dummy = 0;
256 }
257
258 // Remove the user from the allowed list.
259 //
260 // @param user Address of a removed user.
261 //
262 // Selector: removeFromCollectionAllowList(address) 85c51acb
263 function removeFromCollectionAllowList(address user) public {
264 require(false, stub_error);
265 user;
266 dummy = 0;
267 }
268
269 // Switch permission for minting.
270 //
271 // @param mode Enable if "true".
272 //
273 // Selector: setCollectionMintMode(bool) 00018e84
274 function setCollectionMintMode(bool mode) public {
275 require(false, stub_error);
276 mode;
277 dummy = 0;
278 }
279
280 // Check that account is the owner or admin of the collection
281 //
282 // @param user account to verify
283 // @return "true" if account is the owner or admin
284 //
285 // Selector: verifyOwnerOrAdmin(address) c2282493
286 function verifyOwnerOrAdmin(address user) public view returns (bool) {
287 require(false, stub_error);
288 user;
289 dummy;
290 return false;
291 }
292
293 // Check that substrate account is the owner or admin of the collection
294 //
295 // @param user account to verify
296 // @return "true" if account is the owner or admin
297 //
298 // Selector: verifyOwnerOrAdminSubstrate(uint256) fe818e40
299 function verifyOwnerOrAdminSubstrate(uint256 user)
300 public
301 view
302 returns (bool)
303 {
304 require(false, stub_error);
305 user;
306 dummy;
307 return false;
308 }
309
310 // Returns collection type
311 //
312 // @return `Fungible` or `NFT` or `ReFungible`
313 //
314 // Selector: uniqueCollectionType() d34b55b8
315 function uniqueCollectionType() public returns (string memory) {
316 require(false, stub_error);
317 dummy = 0;
318 return "";
319 }
320
321 // Changes collection owner to another account
322 //
323 // @dev Owner can be changed only by current owner
324 // @param newOwner new owner account
325 //
326 // Selector: changeOwner(address) a6f9dae1
327 function changeOwner(address newOwner) public {
328 require(false, stub_error);
329 newOwner;
330 dummy = 0;
331 }
332
333 // Changes collection owner to another substrate account
334 //
335 // @dev Owner can be changed only by current owner
336 // @param newOwner new owner substrate account
337 //
338 // Selector: changeOwnerSubstrate(uint256) 337e2c60
339 function changeOwnerSubstrate(uint256 newOwner) public {
340 require(false, stub_error);
341 newOwner;
342 dummy = 0;
343 }
344}
34553
346// Selector: 4136937754// Selector: 41369377
347contract TokenProperties is Dummy, ERC165 {55contract TokenProperties is Dummy, ERC165 {
786 }494 }
787}495}
496
497// Selector: f077f83e
498contract Collection is Dummy, ERC165 {
499 // Set collection property.
500 //
501 // @param key Property key.
502 // @param value Propery value.
503 //
504 // Selector: setCollectionProperty(string,bytes) 2f073f66
505 function setCollectionProperty(string memory key, bytes memory value)
506 public
507 {
508 require(false, stub_error);
509 key;
510 value;
511 dummy = 0;
512 }
513
514 // Delete collection property.
515 //
516 // @param key Property key.
517 //
518 // Selector: deleteCollectionProperty(string) 7b7debce
519 function deleteCollectionProperty(string memory key) public {
520 require(false, stub_error);
521 key;
522 dummy = 0;
523 }
524
525 // Get collection property.
526 //
527 // @dev Throws error if key not found.
528 //
529 // @param key Property key.
530 // @return bytes The property corresponding to the key.
531 //
532 // Selector: collectionProperty(string) cf24fd6d
533 function collectionProperty(string memory key)
534 public
535 view
536 returns (bytes memory)
537 {
538 require(false, stub_error);
539 key;
540 dummy;
541 return hex"";
542 }
543
544 // Set the sponsor of the collection.
545 //
546 // @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.
547 //
548 // @param sponsor Address of the sponsor from whose account funds will be debited for operations with the contract.
549 //
550 // Selector: setCollectionSponsor(address) 7623402e
551 function setCollectionSponsor(address sponsor) public {
552 require(false, stub_error);
553 sponsor;
554 dummy = 0;
555 }
556
557 // Collection sponsorship confirmation.
558 //
559 // @dev After setting the sponsor for the collection, it must be confirmed with this function.
560 //
561 // Selector: confirmCollectionSponsorship() 3c50e97a
562 function confirmCollectionSponsorship() public {
563 require(false, stub_error);
564 dummy = 0;
565 }
566
567 // Set limits for the collection.
568 // @dev Throws error if limit not found.
569 // @param limit Name of the limit. Valid names:
570 // "accountTokenOwnershipLimit",
571 // "sponsoredDataSize",
572 // "sponsoredDataRateLimit",
573 // "tokenLimit",
574 // "sponsorTransferTimeout",
575 // "sponsorApproveTimeout"
576 // @param value Value of the limit.
577 //
578 // Selector: setCollectionLimit(string,uint32) 6a3841db
579 function setCollectionLimit(string memory limit, uint32 value) public {
580 require(false, stub_error);
581 limit;
582 value;
583 dummy = 0;
584 }
585
586 // Set limits for the collection.
587 // @dev Throws error if limit not found.
588 // @param limit Name of the limit. Valid names:
589 // "ownerCanTransfer",
590 // "ownerCanDestroy",
591 // "transfersEnabled"
592 // @param value Value of the limit.
593 //
594 // Selector: setCollectionLimit(string,bool) 993b7fba
595 function setCollectionLimit(string memory limit, bool value) public {
596 require(false, stub_error);
597 limit;
598 value;
599 dummy = 0;
600 }
601
602 // Get contract address.
603 //
604 // Selector: contractAddress() f6b4dfb4
605 function contractAddress() public view returns (address) {
606 require(false, stub_error);
607 dummy;
608 return 0x0000000000000000000000000000000000000000;
609 }
610
611 // Add collection admin by substrate address.
612 // @param new_admin Substrate administrator address.
613 //
614 // Selector: addCollectionAdminSubstrate(uint256) 5730062b
615 function addCollectionAdminSubstrate(uint256 newAdmin) public {
616 require(false, stub_error);
617 newAdmin;
618 dummy = 0;
619 }
620
621 // Remove collection admin by substrate address.
622 // @param admin Substrate administrator address.
623 //
624 // Selector: removeCollectionAdminSubstrate(uint256) 4048fcf9
625 function removeCollectionAdminSubstrate(uint256 admin) public {
626 require(false, stub_error);
627 admin;
628 dummy = 0;
629 }
630
631 // Add collection admin.
632 // @param new_admin Address of the added administrator.
633 //
634 // Selector: addCollectionAdmin(address) 92e462c7
635 function addCollectionAdmin(address newAdmin) public {
636 require(false, stub_error);
637 newAdmin;
638 dummy = 0;
639 }
640
641 // Remove collection admin.
642 //
643 // @param new_admin Address of the removed administrator.
644 //
645 // Selector: removeCollectionAdmin(address) fafd7b42
646 function removeCollectionAdmin(address admin) public {
647 require(false, stub_error);
648 admin;
649 dummy = 0;
650 }
651
652 // Toggle accessibility of collection nesting.
653 //
654 // @param enable If "true" degenerates to nesting: 'Owner' else to nesting: 'Disabled'
655 //
656 // Selector: setCollectionNesting(bool) 112d4586
657 function setCollectionNesting(bool enable) public {
658 require(false, stub_error);
659 enable;
660 dummy = 0;
661 }
662
663 // Toggle accessibility of collection nesting.
664 //
665 // @param enable If "true" degenerates to nesting: {OwnerRestricted: [1, 2, 3]} else to nesting: 'Disabled'
666 // @param collections Addresses of collections that will be available for nesting.
667 //
668 // Selector: setCollectionNesting(bool,address[]) 64872396
669 function setCollectionNesting(bool enable, address[] memory collections)
670 public
671 {
672 require(false, stub_error);
673 enable;
674 collections;
675 dummy = 0;
676 }
677
678 // Set the collection access method.
679 // @param mode Access mode
680 // 0 for Normal
681 // 1 for AllowList
682 //
683 // Selector: setCollectionAccess(uint8) 41835d4c
684 function setCollectionAccess(uint8 mode) public {
685 require(false, stub_error);
686 mode;
687 dummy = 0;
688 }
689
690 // Add the user to the allowed list.
691 //
692 // @param user Address of a trusted user.
693 //
694 // Selector: addToCollectionAllowList(address) 67844fe6
695 function addToCollectionAllowList(address user) public {
696 require(false, stub_error);
697 user;
698 dummy = 0;
699 }
700
701 // Remove the user from the allowed list.
702 //
703 // @param user Address of a removed user.
704 //
705 // Selector: removeFromCollectionAllowList(address) 85c51acb
706 function removeFromCollectionAllowList(address user) public {
707 require(false, stub_error);
708 user;
709 dummy = 0;
710 }
711
712 // Switch permission for minting.
713 //
714 // @param mode Enable if "true".
715 //
716 // Selector: setCollectionMintMode(bool) 00018e84
717 function setCollectionMintMode(bool mode) public {
718 require(false, stub_error);
719 mode;
720 dummy = 0;
721 }
722
723 // Check that account is the owner or admin of the collection
724 //
725 // @param user account to verify
726 // @return "true" if account is the owner or admin
727 //
728 // Selector: verifyOwnerOrAdmin(address) c2282493
729 function verifyOwnerOrAdmin(address user) public view returns (bool) {
730 require(false, stub_error);
731 user;
732 dummy;
733 return false;
734 }
735
736 // Check that substrate account is the owner or admin of the collection
737 //
738 // @param user account to verify
739 // @return "true" if account is the owner or admin
740 //
741 // Selector: verifyOwnerOrAdmin(uint256) a83328e5
742 function verifyOwnerOrAdmin(uint256 user) public view returns (bool) {
743 require(false, stub_error);
744 user;
745 dummy;
746 return false;
747 }
748
749 // Returns collection type
750 //
751 // @return `Fungible` or `NFT` or `ReFungible`
752 //
753 // Selector: uniqueCollectionType() d34b55b8
754 function uniqueCollectionType() public returns (string memory) {
755 require(false, stub_error);
756 dummy = 0;
757 return "";
758 }
759
760 // Changes collection owner to another account
761 //
762 // @dev Owner can be changed only by current owner
763 // @param newOwner new owner account
764 //
765 // Selector: changeOwner(address) a6f9dae1
766 function changeOwner(address newOwner) public {
767 require(false, stub_error);
768 newOwner;
769 dummy = 0;
770 }
771
772 // Changes collection owner to another substrate account
773 //
774 // @dev Owner can be changed only by current owner
775 // @param newOwner new owner substrate account
776 //
777 // Selector: changeOwner(uint256) 924c19f7
778 function changeOwner(uint256 newOwner) public {
779 require(false, stub_error);
780 newOwner;
781 dummy = 0;
782 }
783}
788784
789contract UniqueNFT is785contract UniqueNFT is
790 Dummy,786 Dummy,
modifiedpallets/refungible/src/stubs/UniqueRefungible.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/refungible/src/stubs/UniqueRefungible.soldiffbeforeafterboth
--- a/pallets/refungible/src/stubs/UniqueRefungible.sol
+++ b/pallets/refungible/src/stubs/UniqueRefungible.sol
@@ -51,298 +51,6 @@
 	event MintingFinished();
 }
 
-// Selector: 07f76b0c
-contract Collection is Dummy, ERC165 {
-	// Set collection property.
-	//
-	// @param key Property key.
-	// @param value Propery value.
-	//
-	// Selector: setCollectionProperty(string,bytes) 2f073f66
-	function setCollectionProperty(string memory key, bytes memory value)
-		public
-	{
-		require(false, stub_error);
-		key;
-		value;
-		dummy = 0;
-	}
-
-	// Delete collection property.
-	//
-	// @param key Property key.
-	//
-	// Selector: deleteCollectionProperty(string) 7b7debce
-	function deleteCollectionProperty(string memory key) public {
-		require(false, stub_error);
-		key;
-		dummy = 0;
-	}
-
-	// Get collection property.
-	//
-	// @dev Throws error if key not found.
-	//
-	// @param key Property key.
-	// @return bytes The property corresponding to the key.
-	//
-	// Selector: collectionProperty(string) cf24fd6d
-	function collectionProperty(string memory key)
-		public
-		view
-		returns (bytes memory)
-	{
-		require(false, stub_error);
-		key;
-		dummy;
-		return hex"";
-	}
-
-	// Set the sponsor of the collection.
-	//
-	// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.
-	//
-	// @param sponsor Address of the sponsor from whose account funds will be debited for operations with the contract.
-	//
-	// Selector: setCollectionSponsor(address) 7623402e
-	function setCollectionSponsor(address sponsor) public {
-		require(false, stub_error);
-		sponsor;
-		dummy = 0;
-	}
-
-	// Collection sponsorship confirmation.
-	//
-	// @dev After setting the sponsor for the collection, it must be confirmed with this function.
-	//
-	// Selector: confirmCollectionSponsorship() 3c50e97a
-	function confirmCollectionSponsorship() public {
-		require(false, stub_error);
-		dummy = 0;
-	}
-
-	// Set limits for the collection.
-	// @dev Throws error if limit not found.
-	// @param limit Name of the limit. Valid names:
-	// 	"accountTokenOwnershipLimit",
-	// 	"sponsoredDataSize",
-	// 	"sponsoredDataRateLimit",
-	// 	"tokenLimit",
-	// 	"sponsorTransferTimeout",
-	// 	"sponsorApproveTimeout"
-	// @param value Value of the limit.
-	//
-	// Selector: setCollectionLimit(string,uint32) 6a3841db
-	function setCollectionLimit(string memory limit, uint32 value) public {
-		require(false, stub_error);
-		limit;
-		value;
-		dummy = 0;
-	}
-
-	// Set limits for the collection.
-	// @dev Throws error if limit not found.
-	// @param limit Name of the limit. Valid names:
-	// 	"ownerCanTransfer",
-	// 	"ownerCanDestroy",
-	// 	"transfersEnabled"
-	// @param value Value of the limit.
-	//
-	// Selector: setCollectionLimit(string,bool) 993b7fba
-	function setCollectionLimit(string memory limit, bool value) public {
-		require(false, stub_error);
-		limit;
-		value;
-		dummy = 0;
-	}
-
-	// Get contract address.
-	//
-	// Selector: contractAddress() f6b4dfb4
-	function contractAddress() public view returns (address) {
-		require(false, stub_error);
-		dummy;
-		return 0x0000000000000000000000000000000000000000;
-	}
-
-	// Add collection admin by substrate address.
-	// @param new_admin Substrate administrator address.
-	//
-	// Selector: addCollectionAdminSubstrate(uint256) 5730062b
-	function addCollectionAdminSubstrate(uint256 newAdmin) public {
-		require(false, stub_error);
-		newAdmin;
-		dummy = 0;
-	}
-
-	// Remove collection admin by substrate address.
-	// @param admin Substrate administrator address.
-	//
-	// Selector: removeCollectionAdminSubstrate(uint256) 4048fcf9
-	function removeCollectionAdminSubstrate(uint256 admin) public {
-		require(false, stub_error);
-		admin;
-		dummy = 0;
-	}
-
-	// Add collection admin.
-	// @param new_admin Address of the added administrator.
-	//
-	// Selector: addCollectionAdmin(address) 92e462c7
-	function addCollectionAdmin(address newAdmin) public {
-		require(false, stub_error);
-		newAdmin;
-		dummy = 0;
-	}
-
-	// Remove collection admin.
-	//
-	// @param new_admin Address of the removed administrator.
-	//
-	// Selector: removeCollectionAdmin(address) fafd7b42
-	function removeCollectionAdmin(address admin) public {
-		require(false, stub_error);
-		admin;
-		dummy = 0;
-	}
-
-	// Toggle accessibility of collection nesting.
-	//
-	// @param enable If "true" degenerates to nesting: 'Owner' else to nesting: 'Disabled'
-	//
-	// Selector: setCollectionNesting(bool) 112d4586
-	function setCollectionNesting(bool enable) public {
-		require(false, stub_error);
-		enable;
-		dummy = 0;
-	}
-
-	// Toggle accessibility of collection nesting.
-	//
-	// @param enable If "true" degenerates to nesting: {OwnerRestricted: [1, 2, 3]} else to nesting: 'Disabled'
-	// @param collections Addresses of collections that will be available for nesting.
-	//
-	// Selector: setCollectionNesting(bool,address[]) 64872396
-	function setCollectionNesting(bool enable, address[] memory collections)
-		public
-	{
-		require(false, stub_error);
-		enable;
-		collections;
-		dummy = 0;
-	}
-
-	// Set the collection access method.
-	// @param mode Access mode
-	// 	0 for Normal
-	// 	1 for AllowList
-	//
-	// Selector: setCollectionAccess(uint8) 41835d4c
-	function setCollectionAccess(uint8 mode) public {
-		require(false, stub_error);
-		mode;
-		dummy = 0;
-	}
-
-	// Add the user to the allowed list.
-	//
-	// @param user Address of a trusted user.
-	//
-	// Selector: addToCollectionAllowList(address) 67844fe6
-	function addToCollectionAllowList(address user) public {
-		require(false, stub_error);
-		user;
-		dummy = 0;
-	}
-
-	// Remove the user from the allowed list.
-	//
-	// @param user Address of a removed user.
-	//
-	// Selector: removeFromCollectionAllowList(address) 85c51acb
-	function removeFromCollectionAllowList(address user) public {
-		require(false, stub_error);
-		user;
-		dummy = 0;
-	}
-
-	// Switch permission for minting.
-	//
-	// @param mode Enable if "true".
-	//
-	// Selector: setCollectionMintMode(bool) 00018e84
-	function setCollectionMintMode(bool mode) public {
-		require(false, stub_error);
-		mode;
-		dummy = 0;
-	}
-
-	// Check that account is the owner or admin of the collection
-	//
-	// @param user account to verify
-	// @return "true" if account is the owner or admin
-	//
-	// Selector: verifyOwnerOrAdmin(address) c2282493
-	function verifyOwnerOrAdmin(address user) public view returns (bool) {
-		require(false, stub_error);
-		user;
-		dummy;
-		return false;
-	}
-
-	// Check that substrate account is the owner or admin of the collection
-	//
-	// @param user account to verify
-	// @return "true" if account is the owner or admin
-	//
-	// Selector: verifyOwnerOrAdminSubstrate(uint256) fe818e40
-	function verifyOwnerOrAdminSubstrate(uint256 user)
-		public
-		view
-		returns (bool)
-	{
-		require(false, stub_error);
-		user;
-		dummy;
-		return false;
-	}
-
-	// Returns collection type
-	//
-	// @return `Fungible` or `NFT` or `ReFungible`
-	//
-	// Selector: uniqueCollectionType() d34b55b8
-	function uniqueCollectionType() public returns (string memory) {
-		require(false, stub_error);
-		dummy = 0;
-		return "";
-	}
-
-	// Changes collection owner to another account
-	//
-	// @dev Owner can be changed only by current owner
-	// @param newOwner new owner account
-	//
-	// Selector: changeOwner(address) a6f9dae1
-	function changeOwner(address newOwner) public {
-		require(false, stub_error);
-		newOwner;
-		dummy = 0;
-	}
-
-	// Changes collection owner to another substrate account
-	//
-	// @dev Owner can be changed only by current owner
-	// @param newOwner new owner substrate account
-	//
-	// Selector: changeOwnerSubstrate(uint256) 337e2c60
-	function changeOwnerSubstrate(uint256 newOwner) public {
-		require(false, stub_error);
-		newOwner;
-		dummy = 0;
-	}
-}
-
 // Selector: 41369377
 contract TokenProperties is Dummy, ERC165 {
 	// @notice Set permissions for token property.
@@ -798,6 +506,294 @@
 	}
 }
 
+// Selector: f077f83e
+contract Collection is Dummy, ERC165 {
+	// Set collection property.
+	//
+	// @param key Property key.
+	// @param value Propery value.
+	//
+	// Selector: setCollectionProperty(string,bytes) 2f073f66
+	function setCollectionProperty(string memory key, bytes memory value)
+		public
+	{
+		require(false, stub_error);
+		key;
+		value;
+		dummy = 0;
+	}
+
+	// Delete collection property.
+	//
+	// @param key Property key.
+	//
+	// Selector: deleteCollectionProperty(string) 7b7debce
+	function deleteCollectionProperty(string memory key) public {
+		require(false, stub_error);
+		key;
+		dummy = 0;
+	}
+
+	// Get collection property.
+	//
+	// @dev Throws error if key not found.
+	//
+	// @param key Property key.
+	// @return bytes The property corresponding to the key.
+	//
+	// Selector: collectionProperty(string) cf24fd6d
+	function collectionProperty(string memory key)
+		public
+		view
+		returns (bytes memory)
+	{
+		require(false, stub_error);
+		key;
+		dummy;
+		return hex"";
+	}
+
+	// Set the sponsor of the collection.
+	//
+	// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.
+	//
+	// @param sponsor Address of the sponsor from whose account funds will be debited for operations with the contract.
+	//
+	// Selector: setCollectionSponsor(address) 7623402e
+	function setCollectionSponsor(address sponsor) public {
+		require(false, stub_error);
+		sponsor;
+		dummy = 0;
+	}
+
+	// Collection sponsorship confirmation.
+	//
+	// @dev After setting the sponsor for the collection, it must be confirmed with this function.
+	//
+	// Selector: confirmCollectionSponsorship() 3c50e97a
+	function confirmCollectionSponsorship() public {
+		require(false, stub_error);
+		dummy = 0;
+	}
+
+	// Set limits for the collection.
+	// @dev Throws error if limit not found.
+	// @param limit Name of the limit. Valid names:
+	// 	"accountTokenOwnershipLimit",
+	// 	"sponsoredDataSize",
+	// 	"sponsoredDataRateLimit",
+	// 	"tokenLimit",
+	// 	"sponsorTransferTimeout",
+	// 	"sponsorApproveTimeout"
+	// @param value Value of the limit.
+	//
+	// Selector: setCollectionLimit(string,uint32) 6a3841db
+	function setCollectionLimit(string memory limit, uint32 value) public {
+		require(false, stub_error);
+		limit;
+		value;
+		dummy = 0;
+	}
+
+	// Set limits for the collection.
+	// @dev Throws error if limit not found.
+	// @param limit Name of the limit. Valid names:
+	// 	"ownerCanTransfer",
+	// 	"ownerCanDestroy",
+	// 	"transfersEnabled"
+	// @param value Value of the limit.
+	//
+	// Selector: setCollectionLimit(string,bool) 993b7fba
+	function setCollectionLimit(string memory limit, bool value) public {
+		require(false, stub_error);
+		limit;
+		value;
+		dummy = 0;
+	}
+
+	// Get contract address.
+	//
+	// Selector: contractAddress() f6b4dfb4
+	function contractAddress() public view returns (address) {
+		require(false, stub_error);
+		dummy;
+		return 0x0000000000000000000000000000000000000000;
+	}
+
+	// Add collection admin by substrate address.
+	// @param new_admin Substrate administrator address.
+	//
+	// Selector: addCollectionAdminSubstrate(uint256) 5730062b
+	function addCollectionAdminSubstrate(uint256 newAdmin) public {
+		require(false, stub_error);
+		newAdmin;
+		dummy = 0;
+	}
+
+	// Remove collection admin by substrate address.
+	// @param admin Substrate administrator address.
+	//
+	// Selector: removeCollectionAdminSubstrate(uint256) 4048fcf9
+	function removeCollectionAdminSubstrate(uint256 admin) public {
+		require(false, stub_error);
+		admin;
+		dummy = 0;
+	}
+
+	// Add collection admin.
+	// @param new_admin Address of the added administrator.
+	//
+	// Selector: addCollectionAdmin(address) 92e462c7
+	function addCollectionAdmin(address newAdmin) public {
+		require(false, stub_error);
+		newAdmin;
+		dummy = 0;
+	}
+
+	// Remove collection admin.
+	//
+	// @param new_admin Address of the removed administrator.
+	//
+	// Selector: removeCollectionAdmin(address) fafd7b42
+	function removeCollectionAdmin(address admin) public {
+		require(false, stub_error);
+		admin;
+		dummy = 0;
+	}
+
+	// Toggle accessibility of collection nesting.
+	//
+	// @param enable If "true" degenerates to nesting: 'Owner' else to nesting: 'Disabled'
+	//
+	// Selector: setCollectionNesting(bool) 112d4586
+	function setCollectionNesting(bool enable) public {
+		require(false, stub_error);
+		enable;
+		dummy = 0;
+	}
+
+	// Toggle accessibility of collection nesting.
+	//
+	// @param enable If "true" degenerates to nesting: {OwnerRestricted: [1, 2, 3]} else to nesting: 'Disabled'
+	// @param collections Addresses of collections that will be available for nesting.
+	//
+	// Selector: setCollectionNesting(bool,address[]) 64872396
+	function setCollectionNesting(bool enable, address[] memory collections)
+		public
+	{
+		require(false, stub_error);
+		enable;
+		collections;
+		dummy = 0;
+	}
+
+	// Set the collection access method.
+	// @param mode Access mode
+	// 	0 for Normal
+	// 	1 for AllowList
+	//
+	// Selector: setCollectionAccess(uint8) 41835d4c
+	function setCollectionAccess(uint8 mode) public {
+		require(false, stub_error);
+		mode;
+		dummy = 0;
+	}
+
+	// Add the user to the allowed list.
+	//
+	// @param user Address of a trusted user.
+	//
+	// Selector: addToCollectionAllowList(address) 67844fe6
+	function addToCollectionAllowList(address user) public {
+		require(false, stub_error);
+		user;
+		dummy = 0;
+	}
+
+	// Remove the user from the allowed list.
+	//
+	// @param user Address of a removed user.
+	//
+	// Selector: removeFromCollectionAllowList(address) 85c51acb
+	function removeFromCollectionAllowList(address user) public {
+		require(false, stub_error);
+		user;
+		dummy = 0;
+	}
+
+	// Switch permission for minting.
+	//
+	// @param mode Enable if "true".
+	//
+	// Selector: setCollectionMintMode(bool) 00018e84
+	function setCollectionMintMode(bool mode) public {
+		require(false, stub_error);
+		mode;
+		dummy = 0;
+	}
+
+	// Check that account is the owner or admin of the collection
+	//
+	// @param user account to verify
+	// @return "true" if account is the owner or admin
+	//
+	// Selector: verifyOwnerOrAdmin(address) c2282493
+	function verifyOwnerOrAdmin(address user) public view returns (bool) {
+		require(false, stub_error);
+		user;
+		dummy;
+		return false;
+	}
+
+	// Check that substrate account is the owner or admin of the collection
+	//
+	// @param user account to verify
+	// @return "true" if account is the owner or admin
+	//
+	// Selector: verifyOwnerOrAdmin(uint256) a83328e5
+	function verifyOwnerOrAdmin(uint256 user) public view returns (bool) {
+		require(false, stub_error);
+		user;
+		dummy;
+		return false;
+	}
+
+	// Returns collection type
+	//
+	// @return `Fungible` or `NFT` or `ReFungible`
+	//
+	// Selector: uniqueCollectionType() d34b55b8
+	function uniqueCollectionType() public returns (string memory) {
+		require(false, stub_error);
+		dummy = 0;
+		return "";
+	}
+
+	// Changes collection owner to another account
+	//
+	// @dev Owner can be changed only by current owner
+	// @param newOwner new owner account
+	//
+	// Selector: changeOwner(address) a6f9dae1
+	function changeOwner(address newOwner) public {
+		require(false, stub_error);
+		newOwner;
+		dummy = 0;
+	}
+
+	// Changes collection owner to another substrate account
+	//
+	// @dev Owner can be changed only by current owner
+	// @param newOwner new owner substrate account
+	//
+	// Selector: changeOwner(uint256) 924c19f7
+	function changeOwner(uint256 newOwner) public {
+		require(false, stub_error);
+		newOwner;
+		dummy = 0;
+	}
+}
+
 contract UniqueRefungible is
 	Dummy,
 	ERC165,
modifiedpallets/refungible/src/stubs/UniqueRefungibleToken.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/unique/src/eth/stubs/CollectionHelpers.rawdiffbeforeafterboth

binary blob — no preview

modifiedtests/src/eth/api/UniqueFungible.soldiffbeforeafterboth
--- a/tests/src/eth/api/UniqueFungible.sol
+++ b/tests/src/eth/api/UniqueFungible.sol
@@ -22,7 +22,50 @@
 	);
 }
 
-// Selector: 07f76b0c
+// Selector: 79cc6790
+interface ERC20UniqueExtensions is Dummy, ERC165 {
+	// Selector: burnFrom(address,uint256) 79cc6790
+	function burnFrom(address from, uint256 amount) external returns (bool);
+}
+
+// Selector: 942e8b22
+interface ERC20 is Dummy, ERC165, ERC20Events {
+	// Selector: name() 06fdde03
+	function name() external view returns (string memory);
+
+	// Selector: symbol() 95d89b41
+	function symbol() external view returns (string memory);
+
+	// Selector: totalSupply() 18160ddd
+	function totalSupply() external view returns (uint256);
+
+	// Selector: decimals() 313ce567
+	function decimals() external view returns (uint8);
+
+	// Selector: balanceOf(address) 70a08231
+	function balanceOf(address owner) external view returns (uint256);
+
+	// Selector: transfer(address,uint256) a9059cbb
+	function transfer(address to, uint256 amount) external returns (bool);
+
+	// Selector: transferFrom(address,address,uint256) 23b872dd
+	function transferFrom(
+		address from,
+		address to,
+		uint256 amount
+	) external returns (bool);
+
+	// Selector: approve(address,uint256) 095ea7b3
+	function approve(address spender, uint256 amount) external returns (bool);
+
+	// Selector: allowance(address,address) dd62ed3e
+	function allowance(address owner, address spender)
+		external
+		view
+		returns (uint256);
+}
+
+// Selector: f077f83e
 interface Collection is Dummy, ERC165 {
 	// Set collection property.
 	//
@@ -182,11 +225,8 @@
 	// @param user account to verify
 	// @return "true" if account is the owner or admin
 	//
-	// Selector: verifyOwnerOrAdminSubstrate(uint256) fe818e40
-	function verifyOwnerOrAdminSubstrate(uint256 user)
-		external
-		view
-		returns (bool);
+	// Selector: verifyOwnerOrAdmin(uint256) a83328e5
+	function verifyOwnerOrAdmin(uint256 user) external view returns (bool);
 
 	// Returns collection type
 	//
@@ -208,51 +248,8 @@
 	// @dev Owner can be changed only by current owner
 	// @param newOwner new owner substrate account
 	//
-	// Selector: changeOwnerSubstrate(uint256) 337e2c60
-	function changeOwnerSubstrate(uint256 newOwner) external;
-}
-
-// Selector: 79cc6790
-interface ERC20UniqueExtensions is Dummy, ERC165 {
-	// Selector: burnFrom(address,uint256) 79cc6790
-	function burnFrom(address from, uint256 amount) external returns (bool);
-}
-
-// Selector: 942e8b22
-interface ERC20 is Dummy, ERC165, ERC20Events {
-	// Selector: name() 06fdde03
-	function name() external view returns (string memory);
-
-	// Selector: symbol() 95d89b41
-	function symbol() external view returns (string memory);
-
-	// Selector: totalSupply() 18160ddd
-	function totalSupply() external view returns (uint256);
-
-	// Selector: decimals() 313ce567
-	function decimals() external view returns (uint8);
-
-	// Selector: balanceOf(address) 70a08231
-	function balanceOf(address owner) external view returns (uint256);
-
-	// Selector: transfer(address,uint256) a9059cbb
-	function transfer(address to, uint256 amount) external returns (bool);
-
-	// Selector: transferFrom(address,address,uint256) 23b872dd
-	function transferFrom(
-		address from,
-		address to,
-		uint256 amount
-	) external returns (bool);
-
-	// Selector: approve(address,uint256) 095ea7b3
-	function approve(address spender, uint256 amount) external returns (bool);
-
-	// Selector: allowance(address,address) dd62ed3e
-	function allowance(address owner, address spender)
-		external
-		view
-		returns (uint256);
+	// Selector: changeOwner(uint256) 924c19f7
+	function changeOwner(uint256 newOwner) external;
 }
 
 interface UniqueFungible is
modifiedtests/src/eth/api/UniqueNFT.soldiffbeforeafterboth
--- a/tests/src/eth/api/UniqueNFT.sol
+++ b/tests/src/eth/api/UniqueNFT.sol
@@ -42,196 +42,6 @@
 	event MintingFinished();
 }
 
-// Selector: 07f76b0c
-interface Collection is Dummy, ERC165 {
-	// Set collection property.
-	//
-	// @param key Property key.
-	// @param value Propery value.
-	//
-	// Selector: setCollectionProperty(string,bytes) 2f073f66
-	function setCollectionProperty(string memory key, bytes memory value)
-		external;
-
-	// Delete collection property.
-	//
-	// @param key Property key.
-	//
-	// Selector: deleteCollectionProperty(string) 7b7debce
-	function deleteCollectionProperty(string memory key) external;
-
-	// Get collection property.
-	//
-	// @dev Throws error if key not found.
-	//
-	// @param key Property key.
-	// @return bytes The property corresponding to the key.
-	//
-	// Selector: collectionProperty(string) cf24fd6d
-	function collectionProperty(string memory key)
-		external
-		view
-		returns (bytes memory);
-
-	// Set the sponsor of the collection.
-	//
-	// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.
-	//
-	// @param sponsor Address of the sponsor from whose account funds will be debited for operations with the contract.
-	//
-	// Selector: setCollectionSponsor(address) 7623402e
-	function setCollectionSponsor(address sponsor) external;
-
-	// Collection sponsorship confirmation.
-	//
-	// @dev After setting the sponsor for the collection, it must be confirmed with this function.
-	//
-	// Selector: confirmCollectionSponsorship() 3c50e97a
-	function confirmCollectionSponsorship() external;
-
-	// Set limits for the collection.
-	// @dev Throws error if limit not found.
-	// @param limit Name of the limit. Valid names:
-	// 	"accountTokenOwnershipLimit",
-	// 	"sponsoredDataSize",
-	// 	"sponsoredDataRateLimit",
-	// 	"tokenLimit",
-	// 	"sponsorTransferTimeout",
-	// 	"sponsorApproveTimeout"
-	// @param value Value of the limit.
-	//
-	// Selector: setCollectionLimit(string,uint32) 6a3841db
-	function setCollectionLimit(string memory limit, uint32 value) external;
-
-	// Set limits for the collection.
-	// @dev Throws error if limit not found.
-	// @param limit Name of the limit. Valid names:
-	// 	"ownerCanTransfer",
-	// 	"ownerCanDestroy",
-	// 	"transfersEnabled"
-	// @param value Value of the limit.
-	//
-	// Selector: setCollectionLimit(string,bool) 993b7fba
-	function setCollectionLimit(string memory limit, bool value) external;
-
-	// Get contract address.
-	//
-	// Selector: contractAddress() f6b4dfb4
-	function contractAddress() external view returns (address);
-
-	// Add collection admin by substrate address.
-	// @param new_admin Substrate administrator address.
-	//
-	// Selector: addCollectionAdminSubstrate(uint256) 5730062b
-	function addCollectionAdminSubstrate(uint256 newAdmin) external;
-
-	// Remove collection admin by substrate address.
-	// @param admin Substrate administrator address.
-	//
-	// Selector: removeCollectionAdminSubstrate(uint256) 4048fcf9
-	function removeCollectionAdminSubstrate(uint256 admin) external;
-
-	// Add collection admin.
-	// @param new_admin Address of the added administrator.
-	//
-	// Selector: addCollectionAdmin(address) 92e462c7
-	function addCollectionAdmin(address newAdmin) external;
-
-	// Remove collection admin.
-	//
-	// @param new_admin Address of the removed administrator.
-	//
-	// Selector: removeCollectionAdmin(address) fafd7b42
-	function removeCollectionAdmin(address admin) external;
-
-	// Toggle accessibility of collection nesting.
-	//
-	// @param enable If "true" degenerates to nesting: 'Owner' else to nesting: 'Disabled'
-	//
-	// Selector: setCollectionNesting(bool) 112d4586
-	function setCollectionNesting(bool enable) external;
-
-	// Toggle accessibility of collection nesting.
-	//
-	// @param enable If "true" degenerates to nesting: {OwnerRestricted: [1, 2, 3]} else to nesting: 'Disabled'
-	// @param collections Addresses of collections that will be available for nesting.
-	//
-	// Selector: setCollectionNesting(bool,address[]) 64872396
-	function setCollectionNesting(bool enable, address[] memory collections)
-		external;
-
-	// Set the collection access method.
-	// @param mode Access mode
-	// 	0 for Normal
-	// 	1 for AllowList
-	//
-	// Selector: setCollectionAccess(uint8) 41835d4c
-	function setCollectionAccess(uint8 mode) external;
-
-	// Add the user to the allowed list.
-	//
-	// @param user Address of a trusted user.
-	//
-	// Selector: addToCollectionAllowList(address) 67844fe6
-	function addToCollectionAllowList(address user) external;
-
-	// Remove the user from the allowed list.
-	//
-	// @param user Address of a removed user.
-	//
-	// Selector: removeFromCollectionAllowList(address) 85c51acb
-	function removeFromCollectionAllowList(address user) external;
-
-	// Switch permission for minting.
-	//
-	// @param mode Enable if "true".
-	//
-	// Selector: setCollectionMintMode(bool) 00018e84
-	function setCollectionMintMode(bool mode) external;
-
-	// Check that account is the owner or admin of the collection
-	//
-	// @param user account to verify
-	// @return "true" if account is the owner or admin
-	//
-	// Selector: verifyOwnerOrAdmin(address) c2282493
-	function verifyOwnerOrAdmin(address user) external view returns (bool);
-
-	// Check that substrate account is the owner or admin of the collection
-	//
-	// @param user account to verify
-	// @return "true" if account is the owner or admin
-	//
-	// Selector: verifyOwnerOrAdminSubstrate(uint256) fe818e40
-	function verifyOwnerOrAdminSubstrate(uint256 user)
-		external
-		view
-		returns (bool);
-
-	// Returns collection type
-	//
-	// @return `Fungible` or `NFT` or `ReFungible`
-	//
-	// Selector: uniqueCollectionType() d34b55b8
-	function uniqueCollectionType() external returns (string memory);
-
-	// Changes collection owner to another account
-	//
-	// @dev Owner can be changed only by current owner
-	// @param newOwner new owner account
-	//
-	// Selector: changeOwner(address) a6f9dae1
-	function changeOwner(address newOwner) external;
-
-	// Changes collection owner to another substrate account
-	//
-	// @dev Owner can be changed only by current owner
-	// @param newOwner new owner substrate account
-	//
-	// Selector: changeOwnerSubstrate(uint256) 337e2c60
-	function changeOwnerSubstrate(uint256 newOwner) external;
-}
-
 // Selector: 41369377
 interface TokenProperties is Dummy, ERC165 {
 	// @notice Set permissions for token property.
@@ -517,6 +327,193 @@
 		returns (bool);
 }
 
+// Selector: f077f83e
+interface Collection is Dummy, ERC165 {
+	// Set collection property.
+	//
+	// @param key Property key.
+	// @param value Propery value.
+	//
+	// Selector: setCollectionProperty(string,bytes) 2f073f66
+	function setCollectionProperty(string memory key, bytes memory value)
+		external;
+
+	// Delete collection property.
+	//
+	// @param key Property key.
+	//
+	// Selector: deleteCollectionProperty(string) 7b7debce
+	function deleteCollectionProperty(string memory key) external;
+
+	// Get collection property.
+	//
+	// @dev Throws error if key not found.
+	//
+	// @param key Property key.
+	// @return bytes The property corresponding to the key.
+	//
+	// Selector: collectionProperty(string) cf24fd6d
+	function collectionProperty(string memory key)
+		external
+		view
+		returns (bytes memory);
+
+	// Set the sponsor of the collection.
+	//
+	// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.
+	//
+	// @param sponsor Address of the sponsor from whose account funds will be debited for operations with the contract.
+	//
+	// Selector: setCollectionSponsor(address) 7623402e
+	function setCollectionSponsor(address sponsor) external;
+
+	// Collection sponsorship confirmation.
+	//
+	// @dev After setting the sponsor for the collection, it must be confirmed with this function.
+	//
+	// Selector: confirmCollectionSponsorship() 3c50e97a
+	function confirmCollectionSponsorship() external;
+
+	// Set limits for the collection.
+	// @dev Throws error if limit not found.
+	// @param limit Name of the limit. Valid names:
+	// 	"accountTokenOwnershipLimit",
+	// 	"sponsoredDataSize",
+	// 	"sponsoredDataRateLimit",
+	// 	"tokenLimit",
+	// 	"sponsorTransferTimeout",
+	// 	"sponsorApproveTimeout"
+	// @param value Value of the limit.
+	//
+	// Selector: setCollectionLimit(string,uint32) 6a3841db
+	function setCollectionLimit(string memory limit, uint32 value) external;
+
+	// Set limits for the collection.
+	// @dev Throws error if limit not found.
+	// @param limit Name of the limit. Valid names:
+	// 	"ownerCanTransfer",
+	// 	"ownerCanDestroy",
+	// 	"transfersEnabled"
+	// @param value Value of the limit.
+	//
+	// Selector: setCollectionLimit(string,bool) 993b7fba
+	function setCollectionLimit(string memory limit, bool value) external;
+
+	// Get contract address.
+	//
+	// Selector: contractAddress() f6b4dfb4
+	function contractAddress() external view returns (address);
+
+	// Add collection admin by substrate address.
+	// @param new_admin Substrate administrator address.
+	//
+	// Selector: addCollectionAdminSubstrate(uint256) 5730062b
+	function addCollectionAdminSubstrate(uint256 newAdmin) external;
+
+	// Remove collection admin by substrate address.
+	// @param admin Substrate administrator address.
+	//
+	// Selector: removeCollectionAdminSubstrate(uint256) 4048fcf9
+	function removeCollectionAdminSubstrate(uint256 admin) external;
+
+	// Add collection admin.
+	// @param new_admin Address of the added administrator.
+	//
+	// Selector: addCollectionAdmin(address) 92e462c7
+	function addCollectionAdmin(address newAdmin) external;
+
+	// Remove collection admin.
+	//
+	// @param new_admin Address of the removed administrator.
+	//
+	// Selector: removeCollectionAdmin(address) fafd7b42
+	function removeCollectionAdmin(address admin) external;
+
+	// Toggle accessibility of collection nesting.
+	//
+	// @param enable If "true" degenerates to nesting: 'Owner' else to nesting: 'Disabled'
+	//
+	// Selector: setCollectionNesting(bool) 112d4586
+	function setCollectionNesting(bool enable) external;
+
+	// Toggle accessibility of collection nesting.
+	//
+	// @param enable If "true" degenerates to nesting: {OwnerRestricted: [1, 2, 3]} else to nesting: 'Disabled'
+	// @param collections Addresses of collections that will be available for nesting.
+	//
+	// Selector: setCollectionNesting(bool,address[]) 64872396
+	function setCollectionNesting(bool enable, address[] memory collections)
+		external;
+
+	// Set the collection access method.
+	// @param mode Access mode
+	// 	0 for Normal
+	// 	1 for AllowList
+	//
+	// Selector: setCollectionAccess(uint8) 41835d4c
+	function setCollectionAccess(uint8 mode) external;
+
+	// Add the user to the allowed list.
+	//
+	// @param user Address of a trusted user.
+	//
+	// Selector: addToCollectionAllowList(address) 67844fe6
+	function addToCollectionAllowList(address user) external;
+
+	// Remove the user from the allowed list.
+	//
+	// @param user Address of a removed user.
+	//
+	// Selector: removeFromCollectionAllowList(address) 85c51acb
+	function removeFromCollectionAllowList(address user) external;
+
+	// Switch permission for minting.
+	//
+	// @param mode Enable if "true".
+	//
+	// Selector: setCollectionMintMode(bool) 00018e84
+	function setCollectionMintMode(bool mode) external;
+
+	// Check that account is the owner or admin of the collection
+	//
+	// @param user account to verify
+	// @return "true" if account is the owner or admin
+	//
+	// Selector: verifyOwnerOrAdmin(address) c2282493
+	function verifyOwnerOrAdmin(address user) external view returns (bool);
+
+	// Check that substrate account is the owner or admin of the collection
+	//
+	// @param user account to verify
+	// @return "true" if account is the owner or admin
+	//
+	// Selector: verifyOwnerOrAdmin(uint256) a83328e5
+	function verifyOwnerOrAdmin(uint256 user) external view returns (bool);
+
+	// Returns collection type
+	//
+	// @return `Fungible` or `NFT` or `ReFungible`
+	//
+	// Selector: uniqueCollectionType() d34b55b8
+	function uniqueCollectionType() external returns (string memory);
+
+	// Changes collection owner to another account
+	//
+	// @dev Owner can be changed only by current owner
+	// @param newOwner new owner account
+	//
+	// Selector: changeOwner(address) a6f9dae1
+	function changeOwner(address newOwner) external;
+
+	// Changes collection owner to another substrate account
+	//
+	// @dev Owner can be changed only by current owner
+	// @param newOwner new owner substrate account
+	//
+	// Selector: changeOwner(uint256) 924c19f7
+	function changeOwner(uint256 newOwner) external;
+}
+
 interface UniqueNFT is
 	Dummy,
 	ERC165,
modifiedtests/src/eth/api/UniqueRefungible.soldiffbeforeafterboth
--- a/tests/src/eth/api/UniqueRefungible.sol
+++ b/tests/src/eth/api/UniqueRefungible.sol
@@ -42,196 +42,6 @@
 	event MintingFinished();
 }
 
-// Selector: 07f76b0c
-interface Collection is Dummy, ERC165 {
-	// Set collection property.
-	//
-	// @param key Property key.
-	// @param value Propery value.
-	//
-	// Selector: setCollectionProperty(string,bytes) 2f073f66
-	function setCollectionProperty(string memory key, bytes memory value)
-		external;
-
-	// Delete collection property.
-	//
-	// @param key Property key.
-	//
-	// Selector: deleteCollectionProperty(string) 7b7debce
-	function deleteCollectionProperty(string memory key) external;
-
-	// Get collection property.
-	//
-	// @dev Throws error if key not found.
-	//
-	// @param key Property key.
-	// @return bytes The property corresponding to the key.
-	//
-	// Selector: collectionProperty(string) cf24fd6d
-	function collectionProperty(string memory key)
-		external
-		view
-		returns (bytes memory);
-
-	// Set the sponsor of the collection.
-	//
-	// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.
-	//
-	// @param sponsor Address of the sponsor from whose account funds will be debited for operations with the contract.
-	//
-	// Selector: setCollectionSponsor(address) 7623402e
-	function setCollectionSponsor(address sponsor) external;
-
-	// Collection sponsorship confirmation.
-	//
-	// @dev After setting the sponsor for the collection, it must be confirmed with this function.
-	//
-	// Selector: confirmCollectionSponsorship() 3c50e97a
-	function confirmCollectionSponsorship() external;
-
-	// Set limits for the collection.
-	// @dev Throws error if limit not found.
-	// @param limit Name of the limit. Valid names:
-	// 	"accountTokenOwnershipLimit",
-	// 	"sponsoredDataSize",
-	// 	"sponsoredDataRateLimit",
-	// 	"tokenLimit",
-	// 	"sponsorTransferTimeout",
-	// 	"sponsorApproveTimeout"
-	// @param value Value of the limit.
-	//
-	// Selector: setCollectionLimit(string,uint32) 6a3841db
-	function setCollectionLimit(string memory limit, uint32 value) external;
-
-	// Set limits for the collection.
-	// @dev Throws error if limit not found.
-	// @param limit Name of the limit. Valid names:
-	// 	"ownerCanTransfer",
-	// 	"ownerCanDestroy",
-	// 	"transfersEnabled"
-	// @param value Value of the limit.
-	//
-	// Selector: setCollectionLimit(string,bool) 993b7fba
-	function setCollectionLimit(string memory limit, bool value) external;
-
-	// Get contract address.
-	//
-	// Selector: contractAddress() f6b4dfb4
-	function contractAddress() external view returns (address);
-
-	// Add collection admin by substrate address.
-	// @param new_admin Substrate administrator address.
-	//
-	// Selector: addCollectionAdminSubstrate(uint256) 5730062b
-	function addCollectionAdminSubstrate(uint256 newAdmin) external;
-
-	// Remove collection admin by substrate address.
-	// @param admin Substrate administrator address.
-	//
-	// Selector: removeCollectionAdminSubstrate(uint256) 4048fcf9
-	function removeCollectionAdminSubstrate(uint256 admin) external;
-
-	// Add collection admin.
-	// @param new_admin Address of the added administrator.
-	//
-	// Selector: addCollectionAdmin(address) 92e462c7
-	function addCollectionAdmin(address newAdmin) external;
-
-	// Remove collection admin.
-	//
-	// @param new_admin Address of the removed administrator.
-	//
-	// Selector: removeCollectionAdmin(address) fafd7b42
-	function removeCollectionAdmin(address admin) external;
-
-	// Toggle accessibility of collection nesting.
-	//
-	// @param enable If "true" degenerates to nesting: 'Owner' else to nesting: 'Disabled'
-	//
-	// Selector: setCollectionNesting(bool) 112d4586
-	function setCollectionNesting(bool enable) external;
-
-	// Toggle accessibility of collection nesting.
-	//
-	// @param enable If "true" degenerates to nesting: {OwnerRestricted: [1, 2, 3]} else to nesting: 'Disabled'
-	// @param collections Addresses of collections that will be available for nesting.
-	//
-	// Selector: setCollectionNesting(bool,address[]) 64872396
-	function setCollectionNesting(bool enable, address[] memory collections)
-		external;
-
-	// Set the collection access method.
-	// @param mode Access mode
-	// 	0 for Normal
-	// 	1 for AllowList
-	//
-	// Selector: setCollectionAccess(uint8) 41835d4c
-	function setCollectionAccess(uint8 mode) external;
-
-	// Add the user to the allowed list.
-	//
-	// @param user Address of a trusted user.
-	//
-	// Selector: addToCollectionAllowList(address) 67844fe6
-	function addToCollectionAllowList(address user) external;
-
-	// Remove the user from the allowed list.
-	//
-	// @param user Address of a removed user.
-	//
-	// Selector: removeFromCollectionAllowList(address) 85c51acb
-	function removeFromCollectionAllowList(address user) external;
-
-	// Switch permission for minting.
-	//
-	// @param mode Enable if "true".
-	//
-	// Selector: setCollectionMintMode(bool) 00018e84
-	function setCollectionMintMode(bool mode) external;
-
-	// Check that account is the owner or admin of the collection
-	//
-	// @param user account to verify
-	// @return "true" if account is the owner or admin
-	//
-	// Selector: verifyOwnerOrAdmin(address) c2282493
-	function verifyOwnerOrAdmin(address user) external view returns (bool);
-
-	// Check that substrate account is the owner or admin of the collection
-	//
-	// @param user account to verify
-	// @return "true" if account is the owner or admin
-	//
-	// Selector: verifyOwnerOrAdminSubstrate(uint256) fe818e40
-	function verifyOwnerOrAdminSubstrate(uint256 user)
-		external
-		view
-		returns (bool);
-
-	// Returns collection type
-	//
-	// @return `Fungible` or `NFT` or `ReFungible`
-	//
-	// Selector: uniqueCollectionType() d34b55b8
-	function uniqueCollectionType() external returns (string memory);
-
-	// Changes collection owner to another account
-	//
-	// @dev Owner can be changed only by current owner
-	// @param newOwner new owner account
-	//
-	// Selector: changeOwner(address) a6f9dae1
-	function changeOwner(address newOwner) external;
-
-	// Changes collection owner to another substrate account
-	//
-	// @dev Owner can be changed only by current owner
-	// @param newOwner new owner substrate account
-	//
-	// Selector: changeOwnerSubstrate(uint256) 337e2c60
-	function changeOwnerSubstrate(uint256 newOwner) external;
-}
-
 // Selector: 41369377
 interface TokenProperties is Dummy, ERC165 {
 	// @notice Set permissions for token property.
@@ -527,6 +337,193 @@
 		returns (address);
 }
 
+// Selector: f077f83e
+interface Collection is Dummy, ERC165 {
+	// Set collection property.
+	//
+	// @param key Property key.
+	// @param value Propery value.
+	//
+	// Selector: setCollectionProperty(string,bytes) 2f073f66
+	function setCollectionProperty(string memory key, bytes memory value)
+		external;
+
+	// Delete collection property.
+	//
+	// @param key Property key.
+	//
+	// Selector: deleteCollectionProperty(string) 7b7debce
+	function deleteCollectionProperty(string memory key) external;
+
+	// Get collection property.
+	//
+	// @dev Throws error if key not found.
+	//
+	// @param key Property key.
+	// @return bytes The property corresponding to the key.
+	//
+	// Selector: collectionProperty(string) cf24fd6d
+	function collectionProperty(string memory key)
+		external
+		view
+		returns (bytes memory);
+
+	// Set the sponsor of the collection.
+	//
+	// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.
+	//
+	// @param sponsor Address of the sponsor from whose account funds will be debited for operations with the contract.
+	//
+	// Selector: setCollectionSponsor(address) 7623402e
+	function setCollectionSponsor(address sponsor) external;
+
+	// Collection sponsorship confirmation.
+	//
+	// @dev After setting the sponsor for the collection, it must be confirmed with this function.
+	//
+	// Selector: confirmCollectionSponsorship() 3c50e97a
+	function confirmCollectionSponsorship() external;
+
+	// Set limits for the collection.
+	// @dev Throws error if limit not found.
+	// @param limit Name of the limit. Valid names:
+	// 	"accountTokenOwnershipLimit",
+	// 	"sponsoredDataSize",
+	// 	"sponsoredDataRateLimit",
+	// 	"tokenLimit",
+	// 	"sponsorTransferTimeout",
+	// 	"sponsorApproveTimeout"
+	// @param value Value of the limit.
+	//
+	// Selector: setCollectionLimit(string,uint32) 6a3841db
+	function setCollectionLimit(string memory limit, uint32 value) external;
+
+	// Set limits for the collection.
+	// @dev Throws error if limit not found.
+	// @param limit Name of the limit. Valid names:
+	// 	"ownerCanTransfer",
+	// 	"ownerCanDestroy",
+	// 	"transfersEnabled"
+	// @param value Value of the limit.
+	//
+	// Selector: setCollectionLimit(string,bool) 993b7fba
+	function setCollectionLimit(string memory limit, bool value) external;
+
+	// Get contract address.
+	//
+	// Selector: contractAddress() f6b4dfb4
+	function contractAddress() external view returns (address);
+
+	// Add collection admin by substrate address.
+	// @param new_admin Substrate administrator address.
+	//
+	// Selector: addCollectionAdminSubstrate(uint256) 5730062b
+	function addCollectionAdminSubstrate(uint256 newAdmin) external;
+
+	// Remove collection admin by substrate address.
+	// @param admin Substrate administrator address.
+	//
+	// Selector: removeCollectionAdminSubstrate(uint256) 4048fcf9
+	function removeCollectionAdminSubstrate(uint256 admin) external;
+
+	// Add collection admin.
+	// @param new_admin Address of the added administrator.
+	//
+	// Selector: addCollectionAdmin(address) 92e462c7
+	function addCollectionAdmin(address newAdmin) external;
+
+	// Remove collection admin.
+	//
+	// @param new_admin Address of the removed administrator.
+	//
+	// Selector: removeCollectionAdmin(address) fafd7b42
+	function removeCollectionAdmin(address admin) external;
+
+	// Toggle accessibility of collection nesting.
+	//
+	// @param enable If "true" degenerates to nesting: 'Owner' else to nesting: 'Disabled'
+	//
+	// Selector: setCollectionNesting(bool) 112d4586
+	function setCollectionNesting(bool enable) external;
+
+	// Toggle accessibility of collection nesting.
+	//
+	// @param enable If "true" degenerates to nesting: {OwnerRestricted: [1, 2, 3]} else to nesting: 'Disabled'
+	// @param collections Addresses of collections that will be available for nesting.
+	//
+	// Selector: setCollectionNesting(bool,address[]) 64872396
+	function setCollectionNesting(bool enable, address[] memory collections)
+		external;
+
+	// Set the collection access method.
+	// @param mode Access mode
+	// 	0 for Normal
+	// 	1 for AllowList
+	//
+	// Selector: setCollectionAccess(uint8) 41835d4c
+	function setCollectionAccess(uint8 mode) external;
+
+	// Add the user to the allowed list.
+	//
+	// @param user Address of a trusted user.
+	//
+	// Selector: addToCollectionAllowList(address) 67844fe6
+	function addToCollectionAllowList(address user) external;
+
+	// Remove the user from the allowed list.
+	//
+	// @param user Address of a removed user.
+	//
+	// Selector: removeFromCollectionAllowList(address) 85c51acb
+	function removeFromCollectionAllowList(address user) external;
+
+	// Switch permission for minting.
+	//
+	// @param mode Enable if "true".
+	//
+	// Selector: setCollectionMintMode(bool) 00018e84
+	function setCollectionMintMode(bool mode) external;
+
+	// Check that account is the owner or admin of the collection
+	//
+	// @param user account to verify
+	// @return "true" if account is the owner or admin
+	//
+	// Selector: verifyOwnerOrAdmin(address) c2282493
+	function verifyOwnerOrAdmin(address user) external view returns (bool);
+
+	// Check that substrate account is the owner or admin of the collection
+	//
+	// @param user account to verify
+	// @return "true" if account is the owner or admin
+	//
+	// Selector: verifyOwnerOrAdmin(uint256) a83328e5
+	function verifyOwnerOrAdmin(uint256 user) external view returns (bool);
+
+	// Returns collection type
+	//
+	// @return `Fungible` or `NFT` or `ReFungible`
+	//
+	// Selector: uniqueCollectionType() d34b55b8
+	function uniqueCollectionType() external returns (string memory);
+
+	// Changes collection owner to another account
+	//
+	// @dev Owner can be changed only by current owner
+	// @param newOwner new owner account
+	//
+	// Selector: changeOwner(address) a6f9dae1
+	function changeOwner(address newOwner) external;
+
+	// Changes collection owner to another substrate account
+	//
+	// @dev Owner can be changed only by current owner
+	// @param newOwner new owner substrate account
+	//
+	// Selector: changeOwner(uint256) 924c19f7
+	function changeOwner(uint256 newOwner) external;
+}
+
 interface UniqueRefungible is
 	Dummy,
 	ERC165,
modifiedtests/src/eth/collectionAdmin.test.tsdiffbeforeafterboth
--- a/tests/src/eth/collectionAdmin.test.ts
+++ b/tests/src/eth/collectionAdmin.test.ts
@@ -373,11 +373,11 @@
     const collectionEvm = evmCollection(web3, owner, collectionIdAddress);
   
     expect(await collectionEvm.methods.verifyOwnerOrAdmin(owner).call()).to.be.true;
-    expect(await collectionEvm.methods.verifyOwnerOrAdminSubstrate(newOwner.addressRaw).call()).to.be.false;
-    await collectionEvm.methods.changeOwnerSubstrate(newOwner.addressRaw).send();
+    expect(await collectionEvm.methods['verifyOwnerOrAdmin(uint256)'](newOwner.addressRaw).call()).to.be.false;
+    await collectionEvm.methods['changeOwner(uint256)'](newOwner.addressRaw).send();
   
     expect(await collectionEvm.methods.verifyOwnerOrAdmin(owner).call()).to.be.false;
-    expect(await collectionEvm.methods.verifyOwnerOrAdminSubstrate(newOwner.addressRaw).call()).to.be.true;
+    expect(await collectionEvm.methods['verifyOwnerOrAdmin(uint256)'](newOwner.addressRaw).call()).to.be.true;
   });
 
   itWeb3('change owner call fee', async ({web3, api, privateKeyWrapper}) => {
@@ -390,7 +390,7 @@
     const {collectionIdAddress} = await getCollectionAddressFromResult(api, result);
     const collectionEvm = evmCollection(web3, owner, collectionIdAddress);
 
-    const cost = await recordEthFee(api, owner, () => collectionEvm.methods.changeOwnerSubstrate(newOwner.addressRaw).send());
+    const cost = await recordEthFee(api, owner, () => collectionEvm.methods['changeOwner(uint256)'](newOwner.addressRaw).send());
     expect(cost < BigInt(0.2 * Number(UNIQUE)));
     expect(cost > 0);
   });
@@ -406,7 +406,7 @@
     const {collectionIdAddress} = await getCollectionAddressFromResult(api, result);
     const collectionEvm = evmCollection(web3, owner, collectionIdAddress);
   
-    await expect(collectionEvm.methods.changeOwnerSubstrate(newOwner.addressRaw).send({from: otherReceiver})).to.be.rejected;
-    expect(await collectionEvm.methods.verifyOwnerOrAdminSubstrate(newOwner.addressRaw).call()).to.be.false;
+    await expect(collectionEvm.methods['changeOwner(uint256)'](newOwner.addressRaw).send({from: otherReceiver})).to.be.rejected;
+    expect(await collectionEvm.methods['verifyOwnerOrAdmin(uint256)'](newOwner.addressRaw).call()).to.be.false;
   });
 });
\ No newline at end of file
modifiedtests/src/eth/fungibleAbi.jsondiffbeforeafterboth
--- a/tests/src/eth/fungibleAbi.json
+++ b/tests/src/eth/fungibleAbi.json
@@ -117,7 +117,7 @@
   },
   {
     "inputs": [
-      { "internalType": "address", "name": "newOwner", "type": "address" }
+      { "internalType": "uint256", "name": "newOwner", "type": "uint256" }
     ],
     "name": "changeOwner",
     "outputs": [],
@@ -126,9 +126,9 @@
   },
   {
     "inputs": [
-      { "internalType": "uint256", "name": "newOwner", "type": "uint256" }
+      { "internalType": "address", "name": "newOwner", "type": "address" }
     ],
-    "name": "changeOwnerSubstrate",
+    "name": "changeOwner",
     "outputs": [],
     "stateMutability": "nonpayable",
     "type": "function"
@@ -329,7 +329,7 @@
   },
   {
     "inputs": [
-      { "internalType": "address", "name": "user", "type": "address" }
+      { "internalType": "uint256", "name": "user", "type": "uint256" }
     ],
     "name": "verifyOwnerOrAdmin",
     "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
@@ -338,9 +338,9 @@
   },
   {
     "inputs": [
-      { "internalType": "uint256", "name": "user", "type": "uint256" }
+      { "internalType": "address", "name": "user", "type": "address" }
     ],
-    "name": "verifyOwnerOrAdminSubstrate",
+    "name": "verifyOwnerOrAdmin",
     "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
     "stateMutability": "view",
     "type": "function"
modifiedtests/src/eth/nonFungibleAbi.jsondiffbeforeafterboth
--- a/tests/src/eth/nonFungibleAbi.json
+++ b/tests/src/eth/nonFungibleAbi.json
@@ -147,7 +147,7 @@
   },
   {
     "inputs": [
-      { "internalType": "address", "name": "newOwner", "type": "address" }
+      { "internalType": "uint256", "name": "newOwner", "type": "uint256" }
     ],
     "name": "changeOwner",
     "outputs": [],
@@ -156,9 +156,9 @@
   },
   {
     "inputs": [
-      { "internalType": "uint256", "name": "newOwner", "type": "uint256" }
+      { "internalType": "address", "name": "newOwner", "type": "address" }
     ],
-    "name": "changeOwnerSubstrate",
+    "name": "changeOwner",
     "outputs": [],
     "stateMutability": "nonpayable",
     "type": "function"
@@ -554,7 +554,7 @@
   },
   {
     "inputs": [
-      { "internalType": "address", "name": "user", "type": "address" }
+      { "internalType": "uint256", "name": "user", "type": "uint256" }
     ],
     "name": "verifyOwnerOrAdmin",
     "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
@@ -563,9 +563,9 @@
   },
   {
     "inputs": [
-      { "internalType": "uint256", "name": "user", "type": "uint256" }
+      { "internalType": "address", "name": "user", "type": "address" }
     ],
-    "name": "verifyOwnerOrAdminSubstrate",
+    "name": "verifyOwnerOrAdmin",
     "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
     "stateMutability": "view",
     "type": "function"
modifiedtests/src/eth/reFungibleAbi.jsondiffbeforeafterboth
--- a/tests/src/eth/reFungibleAbi.json
+++ b/tests/src/eth/reFungibleAbi.json
@@ -147,7 +147,7 @@
   },
   {
     "inputs": [
-      { "internalType": "address", "name": "newOwner", "type": "address" }
+      { "internalType": "uint256", "name": "newOwner", "type": "uint256" }
     ],
     "name": "changeOwner",
     "outputs": [],
@@ -156,9 +156,9 @@
   },
   {
     "inputs": [
-      { "internalType": "uint256", "name": "newOwner", "type": "uint256" }
+      { "internalType": "address", "name": "newOwner", "type": "address" }
     ],
-    "name": "changeOwnerSubstrate",
+    "name": "changeOwner",
     "outputs": [],
     "stateMutability": "nonpayable",
     "type": "function"
@@ -563,7 +563,7 @@
   },
   {
     "inputs": [
-      { "internalType": "address", "name": "user", "type": "address" }
+      { "internalType": "uint256", "name": "user", "type": "uint256" }
     ],
     "name": "verifyOwnerOrAdmin",
     "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
@@ -572,9 +572,9 @@
   },
   {
     "inputs": [
-      { "internalType": "uint256", "name": "user", "type": "uint256" }
+      { "internalType": "address", "name": "user", "type": "address" }
     ],
-    "name": "verifyOwnerOrAdminSubstrate",
+    "name": "verifyOwnerOrAdmin",
     "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
     "stateMutability": "view",
     "type": "function"