Transaction Details
Open on Dero ExplorerInternal ID:
3587957
Transaction Hash:
bed0f3669d233ecae28c3cafb9715f1dec1522b87bf93c2c7aad7b02a216c8f1
Block:
Timestamp:
2023-10-27 22:03:01 UTC (1.7 years ago)
Type:
sc
Ring Size:
2
Payloads:
1
Caller:
The Abyss
(+33 more)
(1396558)
SC Data:
[{"name":"SC_ACTION","datatype":"U","value":"1"},{"name":"SC_CODE","datatype":"S","value":"// Copyright 2022. Civilware. All rights reserved.\n// Artificer NFA Market Standard (ART-NFA-MS1)\n\nFunction InitializePrivate() Uint64\n 10 IF EXISTS(\"owner\") == 0 THEN GOTO 300 ELSE GOTO 999\n 300 STORE(\"artificerFee\", 1)\n 310 STORE(\"royalty\", 3)\n 320 STORE(\"ownerCanUpdate\", 0)\n 330 STORE(\"nameHdr\", \"Gun614\")\n 340 STORE(\"descrHdr\", \"Desperado Guns are a collection of NFT/NFAs created by G and Little Duck. Owning a Desperado G45 NFT will grant holders access to an Artificer standard NFA. NFA holders will be able to participate in a new utility on the Dero blockchain called Asset Duels on dReams app. ;;7b2272223a317d\")\n 350 STORE(\"typeHdr\", \"Image\")\n 360 STORE(\"iconURLHdr\", \"https://raw.githubusercontent.com/DeroDesperados/Desperado-Guns/main/Icons/Gun614-IC.png\")\n 370 STORE(\"tagsHdr\", \"#NFT #NFA #Dero #Cowboys #Guns #Gunfight #AssetDuels\")\n 400 STORE(\"fileCheckC\", \"104fe52ecac51716898542e3076c6cfe565da8d91f080953423214862caa8007\")\n 410 STORE(\"fileCheckS\", \"44e99e7b2de6c53398f4e3629764a2e89bbf357e1a1f628accc4da45cc78ff9\")\n 420 STORE(\"fileURL\", \"https://raw.githubusercontent.com/DeroDesperados/Desperado-Guns/main/Assets/Gun614.png\")\n 430 STORE(\"fileSignURL\", \"https://raw.githubusercontent.com/DeroDesperados/Desperado-Guns/main/Sign/Gun614.png.sign\")\n 440 STORE(\"coverURL\", \"https://raw.githubusercontent.com/DeroDesperados/Desperado-Guns/main/Cover/Gun614-CA.png\")\n 450 STORE(\"collection\", \"Desperado Guns\")\n 500 IF init() == 0 THEN GOTO 600 ELSE GOTO 999\n 600 RETURN 0\n 999 RETURN 1\nEnd Function\n\nFunction init() Uint64\n 10 IF EXISTS(\"owner\") == 0 THEN GOTO 20 ELSE GOTO 999\n 20 STORE(\"owner\", SIGNER())\n 30 STORE(\"creatorAddr\", SIGNER())\n 40 STORE(\"artificerAddr\", ADDRESS_RAW(\"dero1qy0khp9s9yw2h0eu20xmy9lth3zp5cacmx3rwt6k45l568d2mmcf6qgcsevzx\"))\n 50 IF IS_ADDRESS_VALID(LOAD(\"artificerAddr\")) == 1 THEN GOTO 60 ELSE GOTO 999\n 60 STORE(\"active\", 0)\n 70 STORE(\"scBalance\", 0)\n 80 STORE(\"cancelBuffer\", 300)\n 90 STORE(\"startBlockTime\", 0)\n 100 STORE(\"endBlockTime\", 0)\n 110 STORE(\"bidCount\", 0)\n 120 STORE(\"staticBidIncr\", 10000)\n 130 STORE(\"percentBidIncr\", 1000)\n 140 STORE(\"listType\", \"\")\n 150 STORE(\"charityDonatePerc\", 0)\n 160 STORE(\"startPrice\", 0)\n 170 STORE(\"currBidPrice\", 0)\n 180 STORE(\"version\", \"1.1.1\")\n 500 IF LOAD(\"charityDonatePerc\") + LOAD(\"artificerFee\") + LOAD(\"royalty\") \u003e 100 THEN GOTO 999\n 600 SEND_ASSET_TO_ADDRESS(SIGNER(), "1", SCID())\n 610 RETURN 0\n 999 RETURN 1\nEnd Function\n\nFunction ClaimOwnership() Uint64\n 10 IF ASSETVALUE(SCID()) == 1 THEN GOTO 20 ELSE GOTO 999\n 20 IF ADDRESS_STRING(SIGNER()) == \"\" THEN GOTO 500\n 30 transferOwnership(SIGNER())\n 40 SEND_ASSET_TO_ADDRESS(SIGNER(), "1", SCID())\n 50 RETURN 0\n 500 SEND_ASSET_TO_ADDRESS(LOAD(\"owner\"), "1", SCID())\n 510 RETURN 0\n 999 RETURN 1\nEnd Function\n\nFunction Update(iconURL String, coverURL String, fileURL String, fileSignURL String, tags String) Uint64\n 10 IF LOAD(\"creatorAddr\") == SIGNER() THEN GOTO 40 ELSE GOTO 20\n 20 IF LOAD(\"ownerCanUpdate\") == 1 THEN GOTO 30 ELSE GOTO 999\n 30 IF LOAD(\"owner\") == SIGNER() THEN GOTO 40 ELSE GOTO 999\n 40 IF iconURL != \"\" THEN GOTO 50 ELSE GOTO 60\n 50 STORE(\"iconURLHdr\", iconURL)\n 60 IF coverURL != \"\" THEN GOTO 70 ELSE GOTO 80\n 70 STORE(\"coverURL\", coverURL)\n 80 IF fileURL != \"\" THEN GOTO 90 ELSE GOTO 100\n 90 STORE(\"fileURL\", fileURL)\n 100 IF fileSignURL != \"\" THEN GOTO 110 ELSE GOTO 120\n 110 STORE(\"fileSignURL\", fileSignURL)\n 120 IF tags != \"\" THEN GOTO 130 ELSE GOTO 140\n 130 STORE(\"tagsHdr\", tags)\n 140 RETURN 0\n 999 RETURN 1\nEnd Function\n\nFunction Start(listType String, duration Uint64, startPrice Uint64, charityDonateAddr String, charityDonatePerc Uint64) Uint64\n 10 dim tempPercCount as Uint64\n 20 dim err as String\n 30 IF ADDRESS_STRING(SIGNER()) == \"\" THEN GOTO 600\n 40 IF ASSETVALUE(SCID()) == 1 THEN GOTO 70 ELSE GOTO 400\n 70 IF listType == \"auction\" THEN GOTO 100 ELSE GOTO 80\n 80 IF listType == \"sale\" THEN GOTO 100 ELSE GOTO 400\n 100 IF LOAD(\"owner\") == SIGNER() THEN GOTO 110 ELSE GOTO 400\n 110 IF checkActive(LOAD(\"listType\")) == 999 THEN GOTO 150 ELSE GOTO 400\n 150 IF charityDonatePerc + LOAD(\"artificerFee\") + LOAD(\"royalty\") \u003e 100 THEN GOTO 160 ELSE GOTO 190\n 160 LET tempPercCount = 100 - LOAD(\"artificerFee\") - LOAD(\"royalty\")\n 165 LET charityDonatePerc = tempPercCount\n 170 STORE(\"charityDonatePerc\", charityDonatePerc)\n 175 IF IS_ADDRESS_VALID(ADDRESS_RAW(charityDonateAddr)) == 1 THEN GOTO 180 ELSE GOTO 400\n 180 STORE(\"charityDonateAddr\", ADDRESS_RAW(charityDonateAddr))\n 185 GOTO 210\n 190 IF charityDonatePerc \u003e 0 THEN GOTO 195 ELSE GOTO 210\n 195 IF IS_ADDRESS_VALID(ADDRESS_RAW(charityDonateAddr)) == 1 THEN GOTO 200 ELSE GOTO 400\n 200 STORE(\"charityDonatePerc\", charityDonatePerc)\n 205 STORE(\"charityDonateAddr\", ADDRESS_RAW(charityDonateAddr))\n 210 STORE(\"listType\", listType)\n 220 STORE(\"scBalance\", 1)\n 230 STORE(\"startBlockTime\", BLOCK_TIMESTAMP())\n 240 STORE(\"endBlockTime\", generateEndBlock(duration, BLOCK_TIMESTAMP()))\n 250 STORE(\"startPrice\", startPrice)\n 270 STORE(\"active\", 1)\n 300 RETURN 0\n 400 IF ASSETVALUE(SCID()) \u003e 0 THEN GOTO 410 ELSE GOTO 999\n 410 SEND_ASSET_TO_ADDRESS(SIGNER(), ASSETVALUE(SCID()), SCID())\n 420 RETURN 0\n 600 IF ASSETVALUE(SCID()) \u003e 0 THEN GOTO 610 ELSE GOTO 999\n 610 SEND_ASSET_TO_ADDRESS(LOAD(\"owner\"), ASSETVALUE(SCID()), SCID())\n 620 RETURN 0\n 999 RETURN 1\nEnd Function\n\nFunction BuyItNow() Uint64\n 10 dim activeFlag as Uint64\n 15 IF ADDRESS_STRING(SIGNER()) == \"\" THEN GOTO 999\n 20 IF LOAD(\"owner\") == SIGNER() THEN GOTO 920 ELSE GOTO 30\n 30 LET activeFlag = checkActive(\"sale\")\n 40 IF activeFlag == 0 THEN GOTO 50 ELSE GOTO 500\n 50 IF LOAD(\"scBalance\") == 1 THEN GOTO 60 ELSE GOTO 920\n 60 IF DEROVALUE() \u003e= LOAD(\"startPrice\") THEN GOTO 70 ELSE GOTO 920\n 70 SEND_ASSET_TO_ADDRESS(SIGNER(), LOAD(\"scBalance\"), SCID())\n 80 STORE(\"scBalance\", 0)\n 90 processDEROFinalPayment(DEROVALUE())\n 95 transferOwnership(SIGNER())\n 96 resetVars(1)\n 97 STORE(\"previousSalePrice\", DEROVALUE())\n 100 RETURN 0\n 500 IF activeFlag == 999 THEN GOTO 920 ELSE GOTO 510\n 510 IF activeFlag == 111 THEN GOTO 520 ELSE GOTO 920\n 520 SEND_ASSET_TO_ADDRESS(LOAD(\"owner\"), LOAD(\"scBalance\"), SCID())\n 530 STORE(\"scBalance\", 0)\n 540 resetVars(1)\n 920 IF DEROVALUE() \u003e 0 THEN GOTO 925 ELSE GOTO 930\n 925 SEND_DERO_TO_ADDRESS(SIGNER(), DEROVALUE())\n 930 RETURN 0\n 999 RETURN 1\nEnd Function\n\nFunction Bid() Uint64\n 10 dim activeFlag, bidAmt as Uint64\n 15 IF ADDRESS_STRING(SIGNER()) == \"\" THEN GOTO 999\n 25 LET bidAmt = DEROVALUE()\n 30 IF LOAD(\"owner\") == SIGNER() THEN GOTO 920 ELSE GOTO 35\n 35 LET activeFlag = checkActive(\"auction\")\n 40 IF activeFlag == 0 THEN GOTO 50 ELSE GOTO 500\n 50 IF LOAD(\"scBalance\") == 1 THEN GOTO 51 ELSE GOTO 920\n 51 IF EXISTS(SIGNER() + \"-bidDate\") == 1 THEN GOTO 60 ELSE GOTO 70\n 60 IF LOAD(SIGNER() + \"-bidDate\") \u003c BLOCK_TIMESTAMP() THEN GOTO 70 ELSE GOTO 920\n 70 IF bidAmt \u003e= LOAD(\"startPrice\") THEN GOTO 80 ELSE GOTO 920\n 80 IF bidAmt \u003e= LOAD(\"currBidPrice\") THEN GOTO 90 ELSE GOTO 920\n 90 STORE(\"currBidPrice\", findLesserIncrease(bidAmt))\n 100 outbidReturns()\n 120 STORE(\"currBidAddr\", SIGNER())\n 130 STORE(\"currBidAmt\", bidAmt)\n 140 STORE(SIGNER() + \"-bidDate\", BLOCK_TIMESTAMP())\n 150 STORE(\"bidCount\", LOAD(\"bidCount\") + 1)\n 170 IF LOAD(\"endBlockTime\") - 900 \u003c= BLOCK_TIMESTAMP() THEN GOTO 180 ELSE GOTO 190\n 180 STORE(\"endBlockTime\", BLOCK_TIMESTAMP() + 900)\n 190 RETURN 0\n 500 IF activeFlag == 999 THEN GOTO 920 ELSE GOTO 510\n 510 IF activeFlag == 111 THEN GOTO 520 ELSE GOTO 920\n 520 IF bidAmt \u003e 0 THEN GOTO 530 ELSE GOTO 540\n 530 SEND_DERO_TO_ADDRESS(SIGNER(), bidAmt)\n 540 processHighestBidder()\n 550 RETURN 0\n 920 IF bidAmt \u003e 0 THEN GOTO 925 ELSE GOTO 930\n 925 SEND_DERO_TO_ADDRESS(SIGNER(), bidAmt)\n 930 RETURN 0\n 999 RETURN 1\nEnd Function\n\nFunction CloseListing() Uint64\n 10 IF LOAD(\"owner\") == SIGNER() THEN GOTO 20 ELSE GOTO 999\n 20 IF checkActive(LOAD(\"listType\")) == 111 THEN GOTO 30 ELSE GOTO 999\n 30 IF LOAD(\"listType\") == \"auction\" THEN GOTO 40 ELSE GOTO 200\n 40 IF LOAD(\"bidCount\") \u003e 0 THEN GOTO 50 ELSE GOTO 210\n 50 processHighestBidder()\n 60 RETURN 0\n 200 IF LOAD(\"listType\") == \"sale\" THEN GOTO 210 ELSE GOTO 999\n 210 SEND_ASSET_TO_ADDRESS(LOAD(\"owner\"), LOAD(\"scBalance\"), SCID())\n 220 STORE(\"scBalance\", 0)\n 230 resetVars(1)\n 240 RETURN 0\n 999 RETURN 1\nEnd Function\n\nFunction CancelListing() Uint64\n 10 dim tempCounter as Uint64\n 30 IF LOAD(\"owner\") == SIGNER() THEN GOTO 50 ELSE GOTO 999\n 50 IF checkActive(LOAD(\"listType\")) == 0 THEN GOTO 60 ELSE GOTO 999\n 60 IF (LOAD(\"startBlockTime\") + LOAD(\"cancelBuffer\")) \u003e= BLOCK_TIMESTAMP() THEN GOTO 460 ELSE GOTO 999\n 460 outbidReturns()\n 600 SEND_ASSET_TO_ADDRESS(LOAD(\"owner\"), LOAD(\"scBalance\"), SCID())\n 610 STORE(\"scBalance\", 0)\n 620 resetVars(1)\n 630 RETURN 0\n 999 RETURN 1\nEnd Function\n\nFunction transferOwnership(newOwner String) Uint64\n 10 IF LOAD(\"owner\") == newOwner THEN GOTO 40 ELSE GOTO 20\n 20 STORE(\"previousOwner\", LOAD(\"owner\"))\n 30 STORE(\"owner\", newOwner)\n 40 RETURN 0\nEnd Function\n\nFunction generateEndBlock(duration Uint64, startBlockTime Uint64) Uint64\n 10 dim timeinseconds, endBlockTime as Uint64\n 20 LET timeinseconds = 3600 * duration\n 30 IF timeinseconds == 0 THEN GOTO 40 ELSE GOTO 50\n 40 LET timeinseconds = 3600\n 50 IF timeinseconds \u003e 604800 THEN GOTO 60 ELSE GOTO 70\n 60 LET timeinseconds = 604800\n 70 LET endBlockTime = startBlockTime + timeinseconds\n 80 RETURN endBlockTime\nEnd Function\n\nFunction checkActive(listType String) Uint64\n 10 IF LOAD(\"startBlockTime\") \u003c= BLOCK_TIMESTAMP() THEN GOTO 30 ELSE GOTO 900\n 30 IF LOAD(\"scBalance\") == 1 THEN GOTO 40 ELSE GOTO 900\n 40 IF LOAD(\"endBlockTime\") \u003e BLOCK_TIMESTAMP() THEN GOTO 50 ELSE GOTO 500\n 50 IF LOAD(\"listType\") == listType THEN GOTO 200 ELSE GOTO 910\n 200 STORE(\"active\", 1)\n 210 RETURN 0\n 500 STORE(\"active\", 0)\n 520 RETURN 111\n 900 STORE(\"active\", 0)\n 910 RETURN 999\nEnd Function\n\nFunction processHighestBidder() Uint64\n 10 dim bidAmt as Uint64\n 20 dim bidAddr as String\n 30 LET bidAddr = LOAD(\"owner\")\n 100 IF EXISTS(\"currBidAmt\") == 1 THEN GOTO 110 ELSE GOTO 310\n 110 IF EXISTS(\"currBidAddr\") == 1 THEN GOTO 120 ELSE GOTO 310\n 120 IF LOAD(\"currBidAddr\") != \"\" THEN GOTO 130 ELSE GOTO 310\n 130 IF LOAD(\"currBidAmt\") \u003e 0 THEN GOTO 140 ELSE GOTO 310\n 140 LET bidAddr = LOAD(\"currBidAddr\")\n 150 LET bidAmt = LOAD(\"currBidAmt\")\n 310 SEND_ASSET_TO_ADDRESS(bidAddr, LOAD(\"scBalance\"), SCID())\n 320 processDEROFinalPayment(bidAmt)\n 350 transferOwnership(bidAddr)\n 360 STORE(\"scBalance\", 0)\n 370 IF EXISTS(bidAddr + \"-bidDate\") == 1 THEN GOTO 380 ELSE GOTO 390\n 380 DELETE(bidAddr + \"-bidDate\")\n 390 DELETE(\"currBidAddr\")\n 400 DELETE(\"currBidAmt\")\n 410 IF bidAmt \u003e 0 THEN GOTO 420 ELSE GOTO 600\n 420 STORE(\"previousAuctionPrice\", bidAmt)\n 600 resetVars(1)\n 610 RETURN 0\nEnd Function\n\nFunction outbidReturns() Uint64\n 20 IF EXISTS(\"currBidAddr\") == 1 THEN GOTO 30 ELSE GOTO 900\n 30 IF EXISTS(\"currBidAmt\") == 1 THEN GOTO 40 ELSE GOTO 900\n 40 IF LOAD(\"currBidAmt\") \u003e 0 THEN GOTO 50 ELSE GOTO 900\n 50 IF LOAD(\"currBidAddr\") != \"\" THEN GOTO 60 ELSE GOTO 900\n 60 SEND_DERO_TO_ADDRESS(LOAD(\"currBidAddr\"), LOAD(\"currBidAmt\"))\n 800 DELETE(LOAD(\"currBidAddr\") + \"-bidDate\")\n 810 DELETE(\"currBidAddr\")\n 820 DELETE(\"currBidAmt\")\n 900 RETURN 0\nEnd Function\n\nFunction processDEROFinalPayment(saleAmt Uint64) Uint64\n 10 dim payoutAmt, royaltyPaymt, artificerPaymt, charityPaymt as Uint64\n 20 IF saleAmt == 0 THEN GOTO 200 ELSE GOTO 60\n 60 IF LOAD(\"royalty\") \u003e 0 THEN GOTO 65 ELSE GOTO 80\n 65 LET royaltyPaymt = LOAD(\"royalty\") * saleAmt / 100\n 66 IF royaltyPaymt \u003e 0 THEN GOTO 70 ELSE GOTO 80\n 70 SEND_DERO_TO_ADDRESS(LOAD(\"creatorAddr\"), royaltyPaymt)\n 80 IF LOAD(\"artificerFee\") \u003e 0 THEN GOTO 85 ELSE GOTO 100\n 85 LET artificerPaymt = LOAD(\"artificerFee\") * saleAmt / 100\n 86 IF artificerPaymt \u003e 0 THEN GOTO 90 ELSE GOTO 100\n 90 SEND_DERO_TO_ADDRESS(LOAD(\"artificerAddr\"), artificerPaymt)\n 100 IF LOAD(\"charityDonatePerc\") \u003e 0 THEN GOTO 105 ELSE GOTO 120\n 105 LET charityPaymt = LOAD(\"charityDonatePerc\") * saleAmt / 100\n 106 IF charityPaymt \u003e 0 THEN GOTO 110 ELSE GOTO 120\n 110 SEND_DERO_TO_ADDRESS(LOAD(\"charityDonateAddr\"), charityPaymt)\n 120 LET payoutAmt = saleAmt - royaltyPaymt - artificerPaymt - charityPaymt\n 125 IF payoutAmt \u003e 0 THEN GOTO 130 ELSE GOTO 200\n 130 SEND_DERO_TO_ADDRESS(LOAD(\"owner\"), payoutAmt)\n 200 RETURN 0\nEnd Function\n\nFunction resetVars(forceReset Uint64) Uint64\n 10 IF forceReset == 0 THEN GOTO 20 ELSE GOTO 30\n 20 IF checkActive(LOAD(\"listType\")) == 999 THEN GOTO 20 ELSE GOTO 900\n 30 STORE(\"startBlockTime\", 0)\n 40 STORE(\"endBlockTime\", 0)\n 50 STORE(\"bidCount\", 0)\n 60 STORE(\"active\", 0)\n 80 STORE(\"startPrice\", 0)\n 90 STORE(\"currBidPrice\", 0)\n 100 STORE(\"listType\", \"\")\n 110 STORE(\"charityDonateAddr\", \"\")\n 120 STORE(\"charityDonatePerc\", 0)\n 200 RETURN 0\n 900 RETURN 999\nEnd Function\n\nFunction findLesserIncrease(bidAmt Uint64) Uint64\n 10 dim percentCalc, staticCalc as Uint64\n 20 LET percentCalc = bidAmt + (bidAmt * LOAD(\"percentBidIncr\") / 10000)\n 30 LET staticCalc = bidAmt + LOAD(\"staticBidIncr\")\n 50 IF percentCalc \u003c staticCalc THEN GOTO 100 ELSE GOTO 200\n 100 RETURN percentCalc\n 200 RETURN staticCalc\nEnd Function"}]
Payload
Token (SCID):
DERO
Deposited:
none
Fees:
0.21021 DERO