tx · 3AeBfj4Ws5dCZMbMEm5kA1b86bFEztCfbD1DzkjJTXRB 3N1hUxU5uVePa5VEmty9UWoTdzjfMUNekSp: -0.01000000 Waves 2020.04.06 15:19 [942367] smart account 3N1hUxU5uVePa5VEmty9UWoTdzjfMUNekSp > SELF 0.00000000 Waves
{ "type": 13, "id": "3AeBfj4Ws5dCZMbMEm5kA1b86bFEztCfbD1DzkjJTXRB", "fee": 1000000, "feeAssetId": null, "timestamp": 1586175414665, "version": 1, "sender": "3N1hUxU5uVePa5VEmty9UWoTdzjfMUNekSp", "senderPublicKey": "C9N8puBe7PNPmySZRMUWyTK96uEaNp6AB2w758sEo4PQ", "proofs": [ "4Qxmf67sES1zuySjNomrhck6mpagK7uUsfQKsA343qvnBx9esZHGWLRWr9MgjPZ2hGFNcFxLW1xqkrsczw57tWK1" ], "script": "base64:AAIDAAAAAAAAABMIARIGCgQICAEIEgcKBQgIAQgIAAAAAAAAAAIAAAABaQEAAAANYXRvbWljRGVwb3NpdAAAAAQAAAAPYXRvbWljUmVjaXBpZW50AAAAEGF0b21pY1dpdGhEcmF3SWQAAAAUYXRvbWljV2l0aGRyYXdBbW91bnQAAAAPYXRvbWljRGVwb3NpdElkBAAAAApjdXJyZW50S2V5CQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAA3BtdAkBAAAAB2V4dHJhY3QAAAABCAUAAAABaQAAAAdwYXltZW50BAAAAAlwYXltZW50SWQIBQAAAANwbXQAAAAHYXNzZXRJZAQAAAANY3VycmVudEFtb3VudAQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgUAAAAKY3VycmVudEtleQUAAAAPYXRvbWljRGVwb3NpdElkBQAAAA9hdG9taWNSZWNpcGllbnQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAQAAAAJbmV3QW1vdW50CQAAZAAAAAIFAAAADWN1cnJlbnRBbW91bnQIBQAAAANwbXQAAAAGYW1vdW50CQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAKY3VycmVudEtleQUAAAAPYXRvbWljRGVwb3NpdElkBQAAAA9hdG9taWNSZWNpcGllbnQFAAAACW5ld0Ftb3VudAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIFAAAACmN1cnJlbnRLZXkFAAAAEGF0b21pY1dpdGhEcmF3SWQFAAAAD2F0b21pY1JlY2lwaWVudAUAAAAUYXRvbWljV2l0aGRyYXdBbW91bnQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAAmRfBQAAAApjdXJyZW50S2V5BQAAAA9hdG9taWNEZXBvc2l0SWQFAAAAD2F0b21pY1JlY2lwaWVudAYFAAAAA25pbAAAAAFpAQAAAA5hdG9taWNXaXRoZHJhdwAAAAUAAAAPYXRvbWljUmVjaXBpZW50AAAAEGF0b21pY1dpdGhEcmF3SWQAAAAUYXRvbWljV2l0aGRyYXdBbW91bnQAAAAPYXRvbWljRGVwb3NpdElkAAAAEWF0b21pY1dpdGhEcmF3SWQyBAAAAApjdXJyZW50S2V5CQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAB2Fzc2V0SWQJAAJZAAAAAQUAAAARYXRvbWljV2l0aERyYXdJZDIEAAAAD215RGVwb3NpdEFtb3VudAQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgUAAAAKY3VycmVudEtleQUAAAAPYXRvbWljRGVwb3NpdElkBQAAAA9hdG9taWNSZWNpcGllbnQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAQAAAAPbXlSZXF1ZXN0QW1vdW50BAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgkAASwAAAACBQAAAApjdXJyZW50S2V5BQAAABBhdG9taWNXaXRoRHJhd0lkBQAAAA9hdG9taWNSZWNpcGllbnQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAQAAAAWcmVjaXBpZW50RGVwb3NpdEFtb3VudAQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgUAAAAPYXRvbWljUmVjaXBpZW50BQAAABBhdG9taWNXaXRoRHJhd0lkBQAAAApjdXJyZW50S2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAAFnJlY2lwaWVudFJlcXVlc3RBbW91bnQEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACCQABLAAAAAIFAAAAD2F0b21pY1JlY2lwaWVudAUAAAAPYXRvbWljRGVwb3NpdElkBQAAAApjdXJyZW50S2V5AwkAAAEA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", "chainId": 84, "height": 942367, "spentComplexity": 0 } View: original | compacted Prev: none Next: DZmuwbaS3MFvi6D8w62iADUjRRAuB8T6J2E6Mf6NPm93 Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 3 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | ||
5 | + | ||
6 | + | @Callable(i) | |
7 | + | func atomicDeposit (atomicRecipient,atomicWithDrawId,atomicWithdrawAmount,atomicDepositId) = { | |
8 | + | let currentKey = toBase58String(i.caller.bytes) | |
9 | + | let pmt = extract(i.payment) | |
10 | + | let paymentId = pmt.assetId | |
11 | + | let currentAmount = match getInteger(this, ((currentKey + atomicDepositId) + atomicRecipient)) { | |
12 | + | case a: Int => | |
13 | + | a | |
14 | + | case _ => | |
15 | + | 0 | |
16 | + | } | |
17 | + | let newAmount = (currentAmount + pmt.amount) | |
18 | + | WriteSet([DataEntry(((currentKey + atomicDepositId) + atomicRecipient), newAmount), DataEntry(((currentKey + atomicWithDrawId) + atomicRecipient), atomicWithdrawAmount), DataEntry(((("d_" + currentKey) + atomicDepositId) + atomicRecipient), true)]) | |
19 | + | } | |
20 | + | ||
21 | + | ||
22 | + | ||
23 | + | @Callable(i) | |
24 | + | func atomicWithdraw (atomicRecipient,atomicWithDrawId,atomicWithdrawAmount,atomicDepositId,atomicWithDrawId2) = { | |
25 | + | let currentKey = toBase58String(i.caller.bytes) | |
26 | + | let assetId = fromBase58String(atomicWithDrawId2) | |
27 | + | let myDepositAmount = match getInteger(this, ((currentKey + atomicDepositId) + atomicRecipient)) { | |
28 | + | case a: Int => | |
29 | + | a | |
30 | + | case _ => | |
31 | + | 0 | |
32 | + | } | |
33 | + | let myRequestAmount = match getInteger(this, ((currentKey + atomicWithDrawId) + atomicRecipient)) { | |
34 | + | case a: Int => | |
35 | + | a | |
36 | + | case _ => | |
37 | + | 0 | |
38 | + | } | |
39 | + | let recipientDepositAmount = match getInteger(this, ((atomicRecipient + atomicWithDrawId) + currentKey)) { | |
40 | + | case a: Int => | |
41 | + | a | |
42 | + | case _ => | |
43 | + | 0 | |
44 | + | } | |
45 | + | let recipientRequestAmount = match getInteger(this, ((atomicRecipient + atomicDepositId) + currentKey)) { | |
46 | + | case a: Int => | |
47 | + | a | |
48 | + | case _ => | |
49 | + | 0 | |
50 | + | } | |
51 | + | let myAtomicFinish = match getBoolean(this, ((("d_" + currentKey) + atomicDepositId) + atomicRecipient)) { | |
52 | + | case a: Boolean => | |
53 | + | a | |
54 | + | case _ => | |
55 | + | false | |
56 | + | } | |
57 | + | let recipientAtomicFinish = match getBoolean(this, ((("d_" + atomicRecipient) + atomicWithDrawId) + currentKey)) { | |
58 | + | case a: Boolean => | |
59 | + | a | |
60 | + | case _ => | |
61 | + | false | |
62 | + | } | |
63 | + | if (if (if (if ((myDepositAmount == recipientRequestAmount)) | |
64 | + | then (recipientDepositAmount == myRequestAmount) | |
65 | + | else false) | |
66 | + | then (myAtomicFinish == true) | |
67 | + | else false) | |
68 | + | then (atomicWithDrawId == "WAVES") | |
69 | + | else false) | |
70 | + | then ScriptResult(WriteSet([DataEntry(((atomicRecipient + atomicWithDrawId) + currentKey), 0), DataEntry(((currentKey + atomicWithDrawId) + atomicRecipient), 0), DataEntry(((("d_" + currentKey) + atomicWithDrawId) + atomicRecipient), false)]), TransferSet([ScriptTransfer(i.caller, atomicWithdrawAmount, unit)])) | |
71 | + | else if (if (if (if ((myDepositAmount == recipientRequestAmount)) | |
72 | + | then (recipientDepositAmount == myRequestAmount) | |
73 | + | else false) | |
74 | + | then (myAtomicFinish == true) | |
75 | + | else false) | |
76 | + | then (atomicWithDrawId != "WAVES") | |
77 | + | else false) | |
78 | + | then ScriptResult(WriteSet([DataEntry(((atomicRecipient + atomicWithDrawId) + currentKey), 0), DataEntry(((currentKey + atomicWithDrawId) + atomicRecipient), 0), DataEntry(((("d_" + currentKey) + atomicWithDrawId) + atomicRecipient), false)]), TransferSet([ScriptTransfer(i.caller, atomicWithdrawAmount, unit)])) | |
79 | + | else throw("Not Atomic Swap") | |
80 | + | } | |
81 | + | ||
82 | + | ||
83 | + | @Verifier(tx) | |
84 | + | func verify () = match tx { | |
85 | + | case ttx: TransferTransaction => | |
86 | + | sigVerify(ttx.bodyBytes, ttx.proofs[0], ttx.senderPublicKey) | |
87 | + | case stx: SetScriptTransaction => | |
88 | + | sigVerify(stx.bodyBytes, stx.proofs[0], stx.senderPublicKey) | |
89 | + | case _ => | |
90 | + | true | |
91 | + | } | |
92 | + |
github/deemru/w8io/026f985 39.31 ms ◑