Skip to main content
. 2023 Jan 27;23(3):1410. doi: 10.3390/s23031410
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 }