| Listing 3. Source code for creating tokens. |
| 1 function createToken( 2 TokenMap storage self, 3 address key, 4 Blueprint memory blueprintData, 5 uint256 creationTimestamp, 6 bytes32 tokenId, 7 string memory tokenDescription, 8 Token[] memory tokensToMerge 9 ) public { 10 require(bucketContainTokens(self, tokensToMerge)); 11 bytes32 blueprintId = blueprintData.blueprintId; 12 bytes32[] memory aggregatedTokensIds = new bytes32[]( 13 tokensToMerge.length 14 ); 15 string memory tokenName = blueprintData.token; 16 Token memory token = Token({ 17 tokenId: tokenId, 18 blueprintId: blueprintId, 19 tokenName: tokenName, 20 tokenDescription: tokenDescription, 21 tokenCreator: blueprintData.blueprintCreator, 22 creationTimestamp: creationTimestamp 23 }); 24 for (uint256 i = 0; i < tokensToMerge.length; i++) { 25 self.containedTokens[tokenId].push(tokensToMerge[i]); 26 aggregatedTokensIds[i] = tokensToMerge[i].tokenId; 27 deleteToken(self, key, tokensToMerge[i].tokenId, true); 28 } 29 insertToken(self, key, token); 30 insertHistoryData( 31 self, 32 tokenId, 33 tokenName, 34 tokenDescription, 35 msg.sender, 36 msg.sender, 37 creationTimestamp, 38 aggregatedTokensIds, 39 TokenHistoryState.Creation 40 ); 41 } |