Smart Contract Details

Open on Dero Explorer
Internal ID:
30037
Block:
Timestamp:
2023-04-11 17:26:23 UTC (2.3 years ago)
Creator:
Akhentek (+10 more) (1389848)
Raw Data:
[{"name":"SC_ACTION","datatype":"U","value":1},{"name":"SC_CODE","datatype":"S","value":"Function InitializePrivate(startSupply Uint64, decimals Uint64, collection String, metadataFormat String, metadata String, freezeCollection Uint64, freezeMetadata Uint64) Uint64\r\n1 IF EXISTS(\"minter\") == 1 THEN GOTO 17\r\n2 STORE(\"minter\", SIGNER())\r\n3 STORE(\"originalMinter\", SIGNER())\r\n4 STORE(\"type\", \"G45-AT\")\r\n5 STORE(\"timestamp\", BLOCK_TIMESTAMP())\r\n6 SEND_ASSET_TO_ADDRESS(SIGNER(), startSupply, SCID())\r\n7 STORE(\"collection\", collection)\r\n8 STORE(\"maxSupply\", 0)\r\n9 STORE(\"totalSupply\", startSupply)\r\n10 STORE(\"decimals\", decimals)\r\n11 STORE(\"metadataFormat\", metadataFormat)\r\n12 STORE(\"metadata\", metadata)\r\n13 STORE(\"frozenCollection\", freezeCollection)\r\n14 STORE(\"frozenMint\", 0)\r\n15 STORE(\"frozenMetadata\", freezeMetadata)\r\n16 RETURN 0\r\n17 RETURN 1\r\nEnd Function\r\n\r\nFunction SetMetadata(format String, metadata String) Uint64\r\n1 IF LOAD(\"minter\") != SIGNER() THEN GOTO 6\r\n2 IF LOAD(\"frozenMetadata\") \u003e= 1 THEN GOTO 6\r\n3 STORE(\"metadataFormat\", format)\r\n4 STORE(\"metadata\", metadata)\r\n5 RETURN 0\r\n6 RETURN 1\r\nEnd Function\r\n\r\nFunction SetCollection(collection String) Uint64\r\n1 IF LOAD(\"minter\") != SIGNER() THEN GOTO 5\r\n2 IF LOAD(\"frozenCollection\") \u003e= 1 THEN GOTO 5\r\n3 STORE(\"collection\", collection)\r\n4 RETURN 0\r\n5 RETURN 1\r\nEnd Function\r\n\r\nFunction Mint(amount Uint64) Uint64\r\n1 IF LOAD(\"minter\") != SIGNER() THEN GOTO 6\r\n2 IF LOAD(\"frozenMint\") \u003e= 1 THEN GOTO 6\r\n3 STORE(\"totalSupply\", LOAD(\"totalSupply\") + amount)\r\n4 SEND_ASSET_TO_ADDRESS(LOAD(\"minter\"), amount, SCID())\r\n5 RETURN 0\r\n6 RETURN 1\r\nEnd Function\r\n\r\nFunction Burn() Uint64\r\n1 STORE(\"totalSupply\", LOAD(\"totalSupply\") - ASSETVALUE(SCID()))\r\n2 RETURN 0\r\nEnd Function\r\n\r\nFunction Freeze(mint Uint64, metadata Uint64, collection Uint64) Uint64\r\n1 IF LOAD(\"minter\") != SIGNER() THEN GOTO 10\r\n2 IF mint == 0 THEN GOTO 5\r\n3 STORE(\"frozenMint\", 1)\r\n4 STORE(\"maxSupply\", LOAD(\"totalSupply\"))\r\n5 IF metadata == 0 THEN GOTO 7\r\n6 STORE(\"frozenMetadata\", 1)\r\n7 IF collection == 0 THEN GOTO 9\r\n8 STORE(\"frozenCollection\", 1)\r\n9 RETURN 0\r\n10 RETURN 1\r\nEnd Function\r\n\r\nFunction DisplayToken() Uint64\r\n1 DIM amount as Uint64\r\n2 DIM signerString as String\r\n3 LET signerString = ADDRESS_STRING(SIGNER())\r\n4 IF signerString == \"\" THEN GOTO 10\r\n5 LET amount = ASSETVALUE(SCID())\r\n6 IF EXISTS(\"owner_\" + signerString) == 0 THEN GOTO 8\r\n7 LET amount = amount + LOAD(\"owner_\" + signerString)\r\n8 STORE(\"owner_\" + signerString, amount)\r\n9 RETURN 0\r\n10 RETURN 1\r\nEnd Function\r\n\r\nFunction RetrieveToken(amount Uint64) Uint64\r\n1 DIM storedAmount as Uint64\r\n2 DIM signerString as String\r\n3 LET signerString = ADDRESS_STRING(SIGNER())\r\n4 LET storedAmount = LOAD(\"owner_\" + signerString)\r\n5 IF amount \u003e storedAmount THEN GOTO 13\r\n6 SEND_ASSET_TO_ADDRESS(SIGNER(), amount, SCID())\r\n7 LET storedAmount = storedAmount - amount\r\n8 IF storedAmount == 0 THEN GOTO 11\r\n9 STORE(\"owner_\" + signerString, storedAmount)\r\n10 RETURN 0\r\n11 DELETE(\"owner_\" + signerString)\r\n12 RETURN 0\r\n13 RETURN 1\r\nEnd Function\r\n\r\nFunction TransferMinter(newMinter string) Uint64\r\n1 IF LOAD(\"minter\") != SIGNER() THEN GOTO 4\r\n2 STORE(\"tempMinter\", ADDRESS_RAW(newMinter))\r\n3 RETURN 0\r\n4 RETURN 1\r\nEnd Function\r\n\r\nFunction CancelTransferMinter() Uint64\r\n1 IF LOAD(\"minter\") != SIGNER() THEN GOTO 4\r\n2 DELETE(\"tempMinter\")\r\n3 RETURN 0\r\n4 RETURN 1\r\nEnd Function\r\n\r\nFunction ClaimMinter() Uint64\r\n1 IF LOAD(\"tempMinter\") != SIGNER() THEN GOTO 5\r\n2 STORE(\"minter\", SIGNER())\r\n3 DELETE(\"tempMinter\")\r\n4 RETURN 0\r\n5 RETURN 1\r\nEnd Function"},{"name":"collection","datatype":"S","value":""},{"name":"decimals","datatype":"U","value":5},{"name":"freezeCollection","datatype":"U","value":0},{"name":"freezeMetadata","datatype":"U","value":0},{"name":"freezeMint","datatype":"U","value":0},{"name":"metadata","datatype":"S","value":"{\"name\":\"Heist Gold Coin\",\"image\":\"ipfs://QmR6Bok4net3qn1zqZFdwwzg4xLbXDYKjUdQcHG1gPC5pG\",\"symbol\":\"HGC\"}"},{"name":"metadataFormat","datatype":"S","value":"json"},{"name":"startSupply","datatype":"U","value":209715200000}]
Code:
Function InitializePrivate(startSupply Uint64, decimals Uint64, collection String, metadataFormat String, metadata String, freezeCollection Uint64, freezeMetadata Uint64) Uint64
1 IF EXISTS("minter") == 1 THEN GOTO 17
2 STORE("minter", SIGNER())
3 STORE("originalMinter", SIGNER())
4 STORE("type", "G45-AT")
5 STORE("timestamp", BLOCK_TIMESTAMP())
6 SEND_ASSET_TO_ADDRESS(SIGNER(), startSupply, SCID())
7 STORE("collection", collection)
8 STORE("maxSupply", 0)
9 STORE("totalSupply", startSupply)
10 STORE("decimals", decimals)
11 STORE("metadataFormat", metadataFormat)
12 STORE("metadata", metadata)
13 STORE("frozenCollection", freezeCollection)
14 STORE("frozenMint", 0)
15 STORE("frozenMetadata", freezeMetadata)
16 RETURN 0
17 RETURN 1
End Function

Function SetMetadata(format String, metadata String) Uint64
1 IF LOAD("minter") != SIGNER() THEN GOTO 6
2 IF LOAD("frozenMetadata") >= 1 THEN GOTO 6
3 STORE("metadataFormat", format)
4 STORE("metadata", metadata)
5 RETURN 0
6 RETURN 1
End Function

Function SetCollection(collection String) Uint64
1 IF LOAD("minter") != SIGNER() THEN GOTO 5
2 IF LOAD("frozenCollection") >= 1 THEN GOTO 5
3 STORE("collection", collection)
4 RETURN 0
5 RETURN 1
End Function

Function Mint(amount Uint64) Uint64
1 IF LOAD("minter") != SIGNER() THEN GOTO 6
2 IF LOAD("frozenMint") >= 1 THEN GOTO 6
3 STORE("totalSupply", LOAD("totalSupply") + amount)
4 SEND_ASSET_TO_ADDRESS(LOAD("minter"), amount, SCID())
5 RETURN 0
6 RETURN 1
End Function

Function Burn() Uint64
1 STORE("totalSupply", LOAD("totalSupply") - ASSETVALUE(SCID()))
2 RETURN 0
End Function

Function Freeze(mint Uint64, metadata Uint64, collection Uint64) Uint64
1 IF LOAD("minter") != SIGNER() THEN GOTO 10
2 IF mint == 0 THEN GOTO 5
3 STORE("frozenMint", 1)
4 STORE("maxSupply", LOAD("totalSupply"))
5 IF metadata == 0 THEN GOTO 7
6 STORE("frozenMetadata", 1)
7 IF collection == 0 THEN GOTO 9
8 STORE("frozenCollection", 1)
9 RETURN 0
10 RETURN 1
End Function

Function DisplayToken() Uint64
1 DIM amount as Uint64
2 DIM signerString as String
3 LET signerString = ADDRESS_STRING(SIGNER())
4 IF signerString == "" THEN GOTO 10
5 LET amount = ASSETVALUE(SCID())
6 IF EXISTS("owner_" + signerString) == 0 THEN GOTO 8
7 LET amount = amount + LOAD("owner_" + signerString)
8 STORE("owner_" + signerString, amount)
9 RETURN 0
10 RETURN 1
End Function

Function RetrieveToken(amount Uint64) Uint64
1 DIM storedAmount as Uint64
2 DIM signerString as String
3 LET signerString = ADDRESS_STRING(SIGNER())
4 LET storedAmount = LOAD("owner_" + signerString)
5 IF amount > storedAmount THEN GOTO 13
6 SEND_ASSET_TO_ADDRESS(SIGNER(), amount, SCID())
7 LET storedAmount = storedAmount - amount
8 IF storedAmount == 0 THEN GOTO 11
9 STORE("owner_" + signerString, storedAmount)
10 RETURN 0
11 DELETE("owner_" + signerString)
12 RETURN 0
13 RETURN 1
End Function

Function TransferMinter(newMinter string) Uint64
1 IF LOAD("minter") != SIGNER() THEN GOTO 4
2 STORE("tempMinter", ADDRESS_RAW(newMinter))
3 RETURN 0
4 RETURN 1
End Function

Function CancelTransferMinter() Uint64
1 IF LOAD("minter") != SIGNER() THEN GOTO 4
2 DELETE("tempMinter")
3 RETURN 0
4 RETURN 1
End Function

Function ClaimMinter() Uint64
1 IF LOAD("tempMinter") != SIGNER() THEN GOTO 5
2 STORE("minter", SIGNER())
3 DELETE("tempMinter")
4 RETURN 0
5 RETURN 1
End Function