Transaction Details
Open on Dero ExplorerInternal ID:
2830508
Transaction Hash:
fd24b1a5a4d88bf59d7dbc5551112901c02f84d51b23e0b7789d6f524954f0d3
Block:
Timestamp:
2022-07-21 17:47:57 UTC (3.2 years ago)
Type:
sc
Ring Size:
2
Payloads:
1
Caller:
Azylem
[special+133]
(604)
SC Data:
[{"name":"SC_ACTION","datatype":"U","value":"1"},{"name":"SC_CODE","datatype":"S","value":"// Copyright 2022. Civilware. All rights reserved.\r\n// Artificer NFA Market Standard (ART-NFA-MS1)\r\n\r\nFunction InitializePrivate() Uint64\r\n 10 IF EXISTS(\"owner\") == 0 THEN GOTO 20 ELSE GOTO 999\r\n 20 STORE(\"owner\", SIGNER())\r\n 30 STORE(\"creatorAddr\", SIGNER())\r\n 40 STORE(\"artificerAddr\", ADDRESS_RAW(\"dero1qy0khp9s9yw2h0eu20xmy9lth3zp5cacmx3rwt6k45l568d2mmcf6qgcsevzx\"))\r\n 50 IF IS_ADDRESS_VALID(LOAD(\"artificerAddr\")) == 1 THEN GOTO 60 ELSE GOTO 999\r\n 60 STORE(\"active\", 0)\r\n 70 STORE(\"scBalance\", 0)\r\n 80 STORE(\"cancelBuffer\", 300)\r\n 90 STORE(\"startBlockTime\", 0)\r\n 100 STORE(\"endBlockTime\", 0)\r\n 110 STORE(\"bidCount\", 0)\r\n 120 STORE(\"staticBidIncr\", 10000)\r\n 130 STORE(\"percentBidIncr\", 1000)\r\n 140 STORE(\"listType\", \"\")\r\n 150 STORE(\"charityDonatePerc\", 0)\r\n 160 STORE(\"startPrice\", 0)\r\n 170 STORE(\"currBidPrice\", 0)\r\n 300 STORE(\"artificerFee\", 10)\r\n 310 STORE(\"royalty\", 10)\r\n 320 STORE(\"ownerCanUpdate\", 0)\r\n 330 STORE(\"nameHdr\", \"AZYDS0004\")\r\n 340 STORE(\"descrHdr\", \"AZYDS0004 - Maximum Simplicity\")\r\n 350 STORE(\"typeHdr\", \"Image\")\r\n 360 STORE(\"iconURLHdr\", \"https://github.com/Azylem/AZYDS0004/blob/main/AZYDS0004-MaximumSimplicity-IC.png?raw=true\")\r\n 370 STORE(\"tagsHdr\", \"#DERO\")\r\n 400 STORE(\"fileCheckC\", \"280d53a2b848203bcfaf7fb2f7107a01a0068a0828e18ad09c6fd80f7bc1924f\")\r\n 410 STORE(\"fileCheckS\", \"926485bacf4358e04a20548950c124df84e959e5fcaacfc6bb491cf9acad011\")\r\n 420 STORE(\"fileURL\", \"https://github.com/Azylem/AZYDS0004/blob/main/AZYDS0004-MaximumSimplicity-DS.png?raw=true\")\r\n 430 STORE(\"fileSignURL\", \"https://github.com/Azylem/AZYDS0004/blob/main/AZYDS0004-MaximumSimplicity-DS.png.sign?raw=true\")\r\n 440 STORE(\"coverURL\", \"https://github.com/Azylem/AZYDS0004/blob/main/AZYDS0004-MaximumSimplicity-CA.png?raw=true\")\r\n 450 STORE(\"collection\", \"AZY-Deroscapes\")\r\n 500 IF LOAD(\"charityDonatePerc\") + LOAD(\"artificerFee\") + LOAD(\"royalty\") \u003e 100 THEN GOTO 999\r\n 600 SEND_ASSET_TO_ADDRESS(SIGNER(), "1", SCID())\r\n 610 RETURN 0\r\n 999 RETURN 1\r\nEnd Function\r\n\r\nFunction ClaimOwnership() Uint64\r\n 10 IF ASSETVALUE(SCID()) == 1 THEN GOTO 20 ELSE GOTO 999\r\n 20 IF ADDRESS_STRING(SIGNER()) == \"\" THEN GOTO 500\r\n 30 transferOwnership(SIGNER())\r\n 40 SEND_ASSET_TO_ADDRESS(SIGNER(), "1", SCID())\r\n 50 RETURN 0\r\n 500 SEND_ASSET_TO_ADDRESS(LOAD(\"owner\"), "1", SCID())\r\n 510 RETURN 0\r\n 999 RETURN 1\r\nEnd Function\r\n\r\nFunction Update(iconURL String, coverURL String, fileURL String, fileSignURL String, tags String) Uint64\r\n 10 IF LOAD(\"creatorAddr\") == SIGNER() THEN GOTO 40 ELSE GOTO 20\r\n 20 IF LOAD(\"ownerCanUpdate\") == 1 THEN GOTO 30 ELSE GOTO 999\r\n 30 IF LOAD(\"owner\") == SIGNER() THEN GOTO 40 ELSE GOTO 999\r\n 40 IF iconURL != \"\" THEN GOTO 50 ELSE GOTO 60\r\n 50 STORE(\"iconURLHdr\", iconURL)\r\n 60 IF coverURL != \"\" THEN GOTO 70 ELSE GOTO 80\r\n 70 STORE(\"coverURL\", coverURL)\r\n 80 IF fileURL != \"\" THEN GOTO 90 ELSE GOTO 100\r\n 90 STORE(\"fileURL\", fileURL)\r\n 100 IF fileSignURL != \"\" THEN GOTO 110 ELSE GOTO 120\r\n 110 STORE(\"fileSignURL\", fileSignURL)\r\n 120 IF tags != \"\" THEN GOTO 130 ELSE GOTO 140\r\n 130 STORE(\"tagsHdr\", tags)\r\n 140 RETURN 0\r\n 999 RETURN 1\r\nEnd Function\r\n\r\nFunction Start(listType String, duration Uint64, startPrice Uint64, charityDonateAddr String, charityDonatePerc Uint64) Uint64\r\n 10 dim tempPercCount as Uint64\r\n 20 dim err as String\r\n 30 IF ADDRESS_STRING(SIGNER()) == \"\" THEN GOTO 600\r\n 40 IF ASSETVALUE(SCID()) == 1 THEN GOTO 70 ELSE GOTO 400\r\n 70 IF listType == \"auction\" THEN GOTO 100 ELSE GOTO 80\r\n 80 IF listType == \"sale\" THEN GOTO 100 ELSE GOTO 400\r\n 100 IF LOAD(\"owner\") == SIGNER() THEN GOTO 110 ELSE GOTO 400\r\n 110 IF checkActive(LOAD(\"listType\")) == 999 THEN GOTO 150 ELSE GOTO 400\r\n 150 IF charityDonatePerc + LOAD(\"artificerFee\") + LOAD(\"royalty\") \u003e 100 THEN GOTO 160 ELSE GOTO 190\r\n 160 LET tempPercCount = 100 - LOAD(\"artificerFee\") - LOAD(\"royalty\")\r\n 165 LET charityDonatePerc = tempPercCount\r\n 170 STORE(\"charityDonatePerc\", charityDonatePerc)\r\n 175 IF IS_ADDRESS_VALID(ADDRESS_RAW(charityDonateAddr)) == 1 THEN GOTO 180 ELSE GOTO 400\r\n 180 STORE(\"charityDonateAddr\", ADDRESS_RAW(charityDonateAddr))\r\n 185 GOTO 210\r\n 190 IF charityDonatePerc \u003e 0 THEN GOTO 195 ELSE GOTO 210\r\n 195 IF IS_ADDRESS_VALID(ADDRESS_RAW(charityDonateAddr)) == 1 THEN GOTO 200 ELSE GOTO 400\r\n 200 STORE(\"charityDonatePerc\", charityDonatePerc)\r\n 205 STORE(\"charityDonateAddr\", ADDRESS_RAW(charityDonateAddr))\r\n 210 STORE(\"listType\", listType)\r\n 220 STORE(\"scBalance\", 1)\r\n 230 STORE(\"startBlockTime\", BLOCK_TIMESTAMP())\r\n 240 STORE(\"endBlockTime\", generateEndBlock(duration, BLOCK_TIMESTAMP()))\r\n 250 STORE(\"startPrice\", startPrice)\r\n 270 STORE(\"active\", 1)\r\n 300 RETURN 0\r\n 400 IF ASSETVALUE(SCID()) \u003e 0 THEN GOTO 410 ELSE GOTO 999\r\n 410 SEND_ASSET_TO_ADDRESS(SIGNER(), ASSETVALUE(SCID()), SCID())\r\n 420 RETURN 0\r\n 600 IF ASSETVALUE(SCID()) \u003e 0 THEN GOTO 610 ELSE GOTO 999\r\n 610 SEND_ASSET_TO_ADDRESS(LOAD(\"owner\"), ASSETVALUE(SCID()), SCID())\r\n 620 RETURN 0\r\n 999 RETURN 1\r\nEnd Function\r\n\r\nFunction BuyItNow() Uint64\r\n 10 dim activeFlag as Uint64\r\n 15 IF ADDRESS_STRING(SIGNER()) == \"\" THEN GOTO 999\r\n 20 IF LOAD(\"owner\") == SIGNER() THEN GOTO 920 ELSE GOTO 30\r\n 30 LET activeFlag = checkActive(\"sale\")\r\n 40 IF activeFlag == 0 THEN GOTO 50 ELSE GOTO 500\r\n 50 IF LOAD(\"scBalance\") == 1 THEN GOTO 60 ELSE GOTO 920\r\n 60 IF DEROVALUE() \u003e= LOAD(\"startPrice\") THEN GOTO 70 ELSE GOTO 920\r\n 70 SEND_ASSET_TO_ADDRESS(SIGNER(), LOAD(\"scBalance\"), SCID())\r\n 80 STORE(\"scBalance\", 0)\r\n 90 processDEROFinalPayment(DEROVALUE())\r\n 95 transferOwnership(SIGNER())\r\n 96 resetVars(1)\r\n 97 STORE(\"previousSalePrice\", DEROVALUE())\r\n 100 RETURN 0\r\n 500 IF activeFlag == 999 THEN GOTO 920 ELSE GOTO 510\r\n 510 IF activeFlag == 111 THEN GOTO 520 ELSE GOTO 920\r\n 520 SEND_ASSET_TO_ADDRESS(LOAD(\"owner\"), LOAD(\"scBalance\"), SCID())\r\n 530 STORE(\"scBalance\", 0)\r\n 540 resetVars(1)\r\n 920 IF DEROVALUE() \u003e 0 THEN GOTO 925 ELSE GOTO 930\r\n 925 SEND_DERO_TO_ADDRESS(SIGNER(), DEROVALUE())\r\n 930 RETURN 0\r\n 999 RETURN 1\r\nEnd Function\r\n\r\nFunction Bid() Uint64\r\n 10 dim tempCounter, activeFlag as Uint64\r\n 15 IF ADDRESS_STRING(SIGNER()) == \"\" THEN GOTO 999\r\n 20 LET tempCounter = LOAD(\"bidCount\") + 1\r\n 30 IF LOAD(\"owner\") == SIGNER() THEN GOTO 920 ELSE GOTO 35\r\n 35 LET activeFlag = checkActive(\"auction\")\r\n 40 IF activeFlag == 0 THEN GOTO 50 ELSE GOTO 500\r\n 50 IF LOAD(\"scBalance\") == 1 THEN GOTO 51 ELSE GOTO 920\r\n 51 IF EXISTS(SIGNER() + \"-bidDate\") == 1 THEN GOTO 60 ELSE GOTO 70\r\n 60 IF LOAD(SIGNER() + \"-bidDate\") \u003c BLOCK_TIMESTAMP() THEN GOTO 70 ELSE GOTO 920\r\n 70 IF DEROVALUE() \u003e= LOAD(\"startPrice\") THEN GOTO 80 ELSE GOTO 920\r\n 80 IF DEROVALUE() \u003e= LOAD(\"currBidPrice\") THEN GOTO 90 ELSE GOTO 920\r\n 90 STORE(\"currBidPrice\", findLesserIncrease(DEROVALUE()))\r\n 100 STORE(\"bidCount\", tempCounter)\r\n 110 STORE(ITOA(tempCounter) + \"-bidAddr\", SIGNER())\r\n 120 STORE(ITOA(tempCounter) + \"-bidAmt\", DEROVALUE())\r\n 130 STORE(SIGNER() + \"-bidDate\", BLOCK_TIMESTAMP())\r\n 140 IF LOAD(\"endBlockTime\") - 900 \u003c= BLOCK_TIMESTAMP() THEN GOTO 150 ELSE GOTO 160\r\n 150 STORE(\"endBlockTime\", BLOCK_TIMESTAMP() + 900)\r\n 160 RETURN 0\r\n 500 IF activeFlag == 999 THEN GOTO 920 ELSE GOTO 510\r\n 510 IF activeFlag == 111 THEN GOTO 520 ELSE GOTO 920\r\n 520 IF DEROVALUE() \u003e 0 THEN GOTO 530 ELSE GOTO 540\r\n 530 SEND_DERO_TO_ADDRESS(SIGNER(), DEROVALUE())\r\n 540 processHighestBidder()\r\n 570 RETURN 0\r\n 920 IF DEROVALUE() \u003e 0 THEN GOTO 925 ELSE GOTO 930\r\n 925 SEND_DERO_TO_ADDRESS(SIGNER(), DEROVALUE())\r\n 930 RETURN 0\r\n 999 RETURN 1\r\nEnd Function\r\n\r\nFunction CloseListing() Uint64\r\n 10 IF LOAD(\"owner\") == SIGNER() THEN GOTO 20 ELSE GOTO 999\r\n 20 IF checkActive(LOAD(\"listType\")) == 111 THEN GOTO 30 ELSE GOTO 999\r\n 30 IF LOAD(\"listType\") == \"auction\" THEN GOTO 40 ELSE GOTO 200\r\n 40 IF LOAD(\"bidCount\") \u003e 0 THEN GOTO 50 ELSE GOTO 210\r\n 50 processHighestBidder()\r\n 60 RETURN 0\r\n 200 IF LOAD(\"listType\") == \"sale\" THEN GOTO 210 ELSE GOTO 999\r\n 210 SEND_ASSET_TO_ADDRESS(LOAD(\"owner\"), LOAD(\"scBalance\"), SCID())\r\n 220 STORE(\"scBalance\", 0)\r\n 230 resetVars(1)\r\n 240 RETURN 0\r\n 999 RETURN 1\r\nEnd Function\r\n\r\nFunction CancelListing() Uint64\r\n 10 dim tempCounter as Uint64\r\n 30 IF LOAD(\"owner\") == SIGNER() THEN GOTO 50 ELSE GOTO 999\r\n 50 IF checkActive(LOAD(\"listType\")) == 0 THEN GOTO 60 ELSE GOTO 999\r\n 60 IF (LOAD(\"startBlockTime\") + LOAD(\"cancelBuffer\")) \u003e= BLOCK_TIMESTAMP() THEN GOTO 460 ELSE GOTO 999\r\n 460 processDEROReturns(LOAD(\"bidCount\"))\r\n 600 SEND_ASSET_TO_ADDRESS(LOAD(\"owner\"), LOAD(\"scBalance\"), SCID())\r\n 610 STORE(\"scBalance\", 0)\r\n 620 resetVars(1)\r\n 630 RETURN 0\r\n 999 RETURN 1\r\nEnd Function\r\n\r\nFunction transferOwnership(newOwner String) Uint64\r\n 10 IF LOAD(\"owner\") == newOwner THEN GOTO 40 ELSE GOTO 20\r\n 20 STORE(\"previousOwner\", LOAD(\"owner\"))\r\n 30 STORE(\"owner\", newOwner)\r\n 40 RETURN 0\r\nEnd Function\r\n\r\nFunction generateEndBlock(duration Uint64, startBlockTime Uint64) Uint64\r\n 10 dim timeinseconds, endBlockTime as Uint64\r\n 20 LET timeinseconds = 3600 * duration\r\n 30 IF timeinseconds == 0 THEN GOTO 40 ELSE GOTO 50\r\n 40 LET timeinseconds = 3600\r\n 50 LET endBlockTime = startBlockTime + timeinseconds\r\n 60 RETURN endBlockTime\r\nEnd Function\r\n\r\nFunction checkActive(listType String) Uint64\r\n 10 IF LOAD(\"startBlockTime\") \u003c= BLOCK_TIMESTAMP() THEN GOTO 30 ELSE GOTO 900\r\n 30 IF LOAD(\"scBalance\") == 1 THEN GOTO 40 ELSE GOTO 900\r\n 40 IF LOAD(\"endBlockTime\") \u003e BLOCK_TIMESTAMP() THEN GOTO 50 ELSE GOTO 500\r\n 50 IF LOAD(\"listType\") == listType THEN GOTO 200 ELSE GOTO 910\r\n 200 STORE(\"active\", 1)\r\n 210 RETURN 0\r\n 500 STORE(\"active\", 0)\r\n 520 RETURN 111\r\n 900 STORE(\"active\", 0)\r\n 910 RETURN 999\r\nEnd Function\r\n\r\nFunction processHighestBidder() Uint64\r\n 10 dim tempCounter, highestBidAmt, highestBidIndex, currBidAmt as Uint64\r\n 20 dim highestbidaddr, currbidaddr as String\r\n 30 LET highestbidaddr = LOAD(\"owner\")\r\n 40 LET tempCounter = LOAD(\"bidCount\") + 1\r\n 100 IF EXISTS(ITOA(tempCounter) + \"-bidAmt\") == 1 THEN GOTO 110 ELSE GOTO 220\r\n 110 IF EXISTS(ITOA(tempCounter) + \"-bidAddr\") == 1 THEN GOTO 120 ELSE GOTO 220\r\n 120 LET currBidAmt = LOAD(ITOA(tempCounter) + \"-bidAmt\")\r\n 130 LET currbidaddr = LOAD(ITOA(tempCounter) + \"-bidAddr\")\r\n 140 IF currBidAmt \u003e 0 THEN GOTO 150 ELSE GOTO 220\r\n 150 IF currbidaddr == \"\" THEN GOTO 220 ELSE GOTO 160\r\n 160 IF highestBidAmt \u003c currBidAmt THEN GOTO 170 ELSE GOTO 220\r\n 170 LET highestBidIndex = tempCounter\r\n 180 LET highestBidAmt = currBidAmt\r\n 190 LET highestbidaddr = currbidaddr\r\n 220 LET tempCounter = tempCounter - 1\r\n 240 IF tempCounter != 0 THEN GOTO 100 ELSE GOTO 300\r\n 300 IF highestbidaddr != \"\" THEN GOTO 310 ELSE GOTO 460\r\n 310 SEND_ASSET_TO_ADDRESS(highestbidaddr, LOAD(\"scBalance\"), SCID())\r\n 320 processDEROFinalPayment(highestBidAmt)\r\n 330 STORE(ITOA(highestBidIndex) + \"-bidAddr\", \"\")\r\n 340 STORE(ITOA(highestBidIndex) + \"-bidAmt\", 0)\r\n 350 transferOwnership(highestbidaddr)\r\n 360 STORE(\"scBalance\", 0)\r\n 370 STORE(\"previousAuctionPrice\", highestBidAmt)\r\n 460 processDEROReturns(LOAD(\"bidCount\"))\r\n 600 resetVars(1)\r\n 610 RETURN 0\r\nEnd Function\r\n\r\nFunction processDEROReturns(tempCounter Uint64) Uint64\r\n 10 IF tempCounter \u003e 0 THEN GOTO 20 ELSE GOTO 900\r\n 20 IF EXISTS(ITOA(tempCounter) + \"-bidAddr\") == 1 THEN GOTO 30 ELSE GOTO 830\r\n 30 IF EXISTS(ITOA(tempCounter) + \"-bidAmt\") == 1 THEN GOTO 40 ELSE GOTO 830\r\n 40 IF LOAD(ITOA(tempCounter) + \"-bidAmt\") \u003e 0 THEN GOTO 50 ELSE GOTO 800\r\n 50 IF LOAD(ITOA(tempCounter) + \"-bidAddr\") != \"\" THEN GOTO 60 ELSE GOTO 800\r\n 60 SEND_DERO_TO_ADDRESS(LOAD(ITOA(tempCounter) + \"-bidAddr\"), LOAD(ITOA(tempCounter) + \"-bidAmt\"))\r\n 800 DELETE(LOAD(ITOA(tempCounter) + \"-bidAddr\") + \"-bidDate\")\r\n 810 DELETE(ITOA(tempCounter) + \"-bidAddr\")\r\n 820 DELETE(ITOA(tempCounter) + \"-bidAmt\")\r\n 830 LET tempCounter = tempCounter - 1\r\n 840 IF tempCounter != 0 THEN GOTO 10 ELSE GOTO 900\r\n 900 RETURN 0\r\nEnd Function\r\n\r\nFunction processDEROFinalPayment(saleAmt Uint64) Uint64\r\n 10 dim payoutAmt, royaltyPaymt, artificerPaymt, charityPaymt as Uint64\r\n 60 IF LOAD(\"royalty\") \u003e 0 THEN GOTO 65 ELSE GOTO 80\r\n 65 LET royaltyPaymt = LOAD(\"royalty\") * saleAmt / 100\r\n 66 IF royaltyPaymt \u003e 0 THEN GOTO 70 ELSE GOTO 80\r\n 70 SEND_DERO_TO_ADDRESS(LOAD(\"creatorAddr\"), royaltyPaymt)\r\n 80 IF LOAD(\"artificerFee\") \u003e 0 THEN GOTO 85 ELSE GOTO 100\r\n 85 LET artificerPaymt = LOAD(\"artificerFee\") * saleAmt / 100\r\n 86 IF artificerPaymt \u003e 0 THEN GOTO 90 ELSE GOTO 100\r\n 90 SEND_DERO_TO_ADDRESS(LOAD(\"artificerAddr\"), artificerPaymt)\r\n 100 IF LOAD(\"charityDonatePerc\") \u003e 0 THEN GOTO 105 ELSE GOTO 120\r\n 105 LET charityPaymt = LOAD(\"charityDonatePerc\") * saleAmt / 100\r\n 106 IF charityPaymt \u003e 0 THEN GOTO 110 ELSE GOTO 120\r\n 110 SEND_DERO_TO_ADDRESS(LOAD(\"charityDonateAddr\"), charityPaymt)\r\n 120 LET payoutAmt = saleAmt - royaltyPaymt - artificerPaymt - charityPaymt\r\n 125 IF payoutAmt \u003e 0 THEN GOTO 130 ELSE GOTO 200\r\n 130 SEND_DERO_TO_ADDRESS(LOAD(\"owner\"), payoutAmt)\r\n 200 RETURN 0\r\nEnd Function\r\n\r\nFunction resetVars(forceReset Uint64) Uint64\r\n 10 IF forceReset == 0 THEN GOTO 20 ELSE GOTO 30\r\n 20 IF checkActive(LOAD(\"listType\")) == 999 THEN GOTO 20 ELSE GOTO 900\r\n 30 STORE(\"startBlockTime\", 0)\r\n 40 STORE(\"endBlockTime\", 0)\r\n 50 STORE(\"bidCount\", 0)\r\n 60 STORE(\"active\", 0)\r\n 80 STORE(\"startPrice\", 0)\r\n 90 STORE(\"currBidPrice\", 0)\r\n 100 STORE(\"listType\", \"\")\r\n 110 STORE(\"charityDonateAddr\", \"\")\r\n 120 STORE(\"charityDonatePerc\", 0)\r\n 200 RETURN 0\r\n 900 RETURN 999\r\nEnd Function\r\n\r\nFunction findLesserIncrease(bidAmt Uint64) Uint64\r\n 10 dim percentCalc, staticCalc as Uint64\r\n 20 LET percentCalc = bidAmt + (bidAmt * LOAD(\"percentBidIncr\") / 10000)\r\n 30 LET staticCalc = bidAmt + LOAD(\"staticBidIncr\")\r\n 50 IF percentCalc \u003c staticCalc THEN GOTO 100 ELSE GOTO 200\r\n 100 RETURN percentCalc\r\n 200 RETURN staticCalc\r\nEnd Function"}]
Payload
Token (SCID):
DERO
Deposited:
none
Fees:
0.21853 DERO