tx · 4mVfajyAKdL2TL3c5pe9meJr8EHcxVqr7tqN55Ptsmuz

3PPfDHC6hNqDMxRArJvJRkYfC8y6S3rSnYb:  -0.01400000 Waves

2022.04.08 22:23 [3065320] smart account 3PPfDHC6hNqDMxRArJvJRkYfC8y6S3rSnYb > SELF 0.00000000 Waves

{ "type": 13, "id": "4mVfajyAKdL2TL3c5pe9meJr8EHcxVqr7tqN55Ptsmuz", "fee": 1400000, "feeAssetId": null, "timestamp": 1649445843758, "version": 2, "chainId": 87, "sender": "3PPfDHC6hNqDMxRArJvJRkYfC8y6S3rSnYb", "senderPublicKey": "4FaPZLDv7cbxuVqPY33ZvAmEhjJBRdYxUxrnBLEoZ6WH", "proofs": [ "5kw2EzmdRikQCYzaqnHK9eyxAUVuVUBJ9BBrsQ7BGSWH6943HWcR3C21ruMwwWhEHNbC35Qcu4xPPrgMyZrHv15r" ], "script": "base64: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", "height": 3065320, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: H4sxdivo4e7WdM2JC7KUUC91rwZdaA5jG4PEJ4WDSEiS Next: 8vKsRoyNbQPben49XGzqPdoMUA9UJiYKfcEYLRi188cG Diff:
OldNewDifferences
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let nftCreationAddress = Address(base58'3P8LVqVKhTViMJau96KNir6FhHr4WnfoW57')
5+
6+let duckWrapperAddress = Address(base58'3P3pDosq4GCwfJkvq4yqKvvoTwmoqc9qPmo')
57
68 let oracleAddress = Address(base58'3PPfDHC6hNqDMxRArJvJRkYfC8y6S3rSnYb')
79
2628
2729
2830 @Callable(i)
31+func stakeAndSendToGateway (recipient) = {
32+ let pmt = value(i.payments[0])
33+ let originNftId = value(pmt.assetId)
34+ let originNftIdStr = toBase58String(originNftId)
35+ let nftIdStr = match invoke(duckWrapperAddress, "lock", nil, i.payments) {
36+ case x: String =>
37+ x
38+ case _ =>
39+ throw("error while wrapping duck")
40+ }
41+ if ((nftIdStr == nftIdStr))
42+ then if (!(verifyNft(nftIdStr)))
43+ then throw("wrong NFT attached")
44+ else [StringEntry((("nft_" + nftIdStr) + "_sentTo"), recipient), IntegerEntry((("nft_" + nftIdStr) + "_lockedAt"), height), StringEntry((("nft_" + nftIdStr) + "_lockedBy"), toString(i.caller))]
45+ else throw("Strict value is not equal to itself.")
46+ }
47+
48+
49+
50+@Callable(i)
2951 func sendFromGateway (nftIdStr,recipient) = if ((i.caller != oracleAddress))
3052 then throw("gateway address allowed only")
3153 else [ScriptTransfer(Address(fromBase58String(recipient)), 1, fromBase58String(nftIdStr)), StringEntry((("nft_" + nftIdStr) + "_unlockedTo"), recipient), IntegerEntry((("nft_" + nftIdStr) + "_unlockedAt"), height)]
54+
55+
56+
57+@Callable(i)
58+func unstakeAndSendFromGateway (nftIdStr,recipient) = {
59+ let nftId = fromBase58String(nftIdStr)
60+ if ((i.caller != oracleAddress))
61+ then throw("gateway address allowed only")
62+ else {
63+ let originNftIdStr = match invoke(duckWrapperAddress, "unlock", nil, [AttachedPayment(nftId, 1)]) {
64+ case x: String =>
65+ x
66+ case _ =>
67+ throw("error while unstaking duck")
68+ }
69+ if ((originNftIdStr == originNftIdStr))
70+ then [ScriptTransfer(Address(fromBase58String(recipient)), 1, fromBase58String(originNftIdStr)), StringEntry((("nft_" + nftIdStr) + "_unlockedTo"), recipient), IntegerEntry((("nft_" + nftIdStr) + "_unlockedAt"), height)]
71+ else throw("Strict value is not equal to itself.")
72+ }
73+ }
3274
3375
3476 @Verifier(tx)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let nftCreationAddress = Address(base58'3P8LVqVKhTViMJau96KNir6FhHr4WnfoW57')
5+
6+let duckWrapperAddress = Address(base58'3P3pDosq4GCwfJkvq4yqKvvoTwmoqc9qPmo')
57
68 let oracleAddress = Address(base58'3PPfDHC6hNqDMxRArJvJRkYfC8y6S3rSnYb')
79
810 func verifyNft (nftIdStr) = match getString(nftCreationAddress, (("nft_" + nftIdStr) + "_data")) {
911 case x: String =>
1012 true
1113 case _ =>
1214 false
1315 }
1416
1517
1618 @Callable(i)
1719 func sendToGateway (recipient) = {
1820 let pmt = value(i.payments[0])
1921 let nftId = value(pmt.assetId)
2022 let nftIdStr = toBase58String(nftId)
2123 if (!(verifyNft(nftIdStr)))
2224 then throw("wrong NFT attached")
2325 else [StringEntry((("nft_" + nftIdStr) + "_sentTo"), recipient), IntegerEntry((("nft_" + nftIdStr) + "_lockedAt"), height), StringEntry((("nft_" + nftIdStr) + "_lockedBy"), toString(i.caller))]
2426 }
2527
2628
2729
2830 @Callable(i)
31+func stakeAndSendToGateway (recipient) = {
32+ let pmt = value(i.payments[0])
33+ let originNftId = value(pmt.assetId)
34+ let originNftIdStr = toBase58String(originNftId)
35+ let nftIdStr = match invoke(duckWrapperAddress, "lock", nil, i.payments) {
36+ case x: String =>
37+ x
38+ case _ =>
39+ throw("error while wrapping duck")
40+ }
41+ if ((nftIdStr == nftIdStr))
42+ then if (!(verifyNft(nftIdStr)))
43+ then throw("wrong NFT attached")
44+ else [StringEntry((("nft_" + nftIdStr) + "_sentTo"), recipient), IntegerEntry((("nft_" + nftIdStr) + "_lockedAt"), height), StringEntry((("nft_" + nftIdStr) + "_lockedBy"), toString(i.caller))]
45+ else throw("Strict value is not equal to itself.")
46+ }
47+
48+
49+
50+@Callable(i)
2951 func sendFromGateway (nftIdStr,recipient) = if ((i.caller != oracleAddress))
3052 then throw("gateway address allowed only")
3153 else [ScriptTransfer(Address(fromBase58String(recipient)), 1, fromBase58String(nftIdStr)), StringEntry((("nft_" + nftIdStr) + "_unlockedTo"), recipient), IntegerEntry((("nft_" + nftIdStr) + "_unlockedAt"), height)]
54+
55+
56+
57+@Callable(i)
58+func unstakeAndSendFromGateway (nftIdStr,recipient) = {
59+ let nftId = fromBase58String(nftIdStr)
60+ if ((i.caller != oracleAddress))
61+ then throw("gateway address allowed only")
62+ else {
63+ let originNftIdStr = match invoke(duckWrapperAddress, "unlock", nil, [AttachedPayment(nftId, 1)]) {
64+ case x: String =>
65+ x
66+ case _ =>
67+ throw("error while unstaking duck")
68+ }
69+ if ((originNftIdStr == originNftIdStr))
70+ then [ScriptTransfer(Address(fromBase58String(recipient)), 1, fromBase58String(originNftIdStr)), StringEntry((("nft_" + nftIdStr) + "_unlockedTo"), recipient), IntegerEntry((("nft_" + nftIdStr) + "_unlockedAt"), height)]
71+ else throw("Strict value is not equal to itself.")
72+ }
73+ }
3274
3375
3476 @Verifier(tx)
3577 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
3678

github/deemru/w8io/3ef1775 
40.05 ms