| Listing 4. Source code for disaggregating tokens. |
| 1 function disaggregateToken( 2 TokenMap storage self, 3 Token memory token, 4 Token[] memory tokens, 5 address key 6 ) public { 7 bytes32 tokenId = token.tokenId; 8 require(contains(self, key, tokenId)); 9 uint256 disaggregationTimestamp = block.timestamp; 10 bytes32[] memory disaggregatedTokenIds = new bytes32[](tokens.length); 11 for (uint256 i = 0; i < tokens.length; i++) { 12 Token memory disaggregatedToken = tokens[i]; 13 disaggregatedTokenIds[i] = disaggregatedToken.tokenId; 14 insertToken(self, key, disaggregatedToken); 15 } 16 deleteToken(self, key, tokenId, false); 17 insertHistoryData( 18 self, 19 tokenId, 20 token.tokenName, 21 token.tokenDescription, 22 msg.sender, 23 msg.sender, 24 disaggregationTimestamp, 25 disaggregatedTokenIds, 26 TokenHistoryState.Disaggregation 27 ); 28 } |