tx · 6KdXMT26em9yZ6aRneX915A6UywJWy8qfgvtSWMLzohA

3PASSWoRDdda3KLGmUVNNXotKt3EwP4RTEz:  -0.01000000 Waves

2019.04.04 16:48 [1467747] smart account 3PASSWoRDdda3KLGmUVNNXotKt3EwP4RTEz > SELF 0.00000000 Waves

{ "type": 13, "id": "6KdXMT26em9yZ6aRneX915A6UywJWy8qfgvtSWMLzohA", "fee": 1000000, "feeAssetId": null, "timestamp": 1554385718817, "version": 1, "sender": "3PASSWoRDdda3KLGmUVNNXotKt3EwP4RTEz", "senderPublicKey": "GN19Axp4KzcNm68Z5RRu2mpgcsUBaETv6aeiSWQB6CKX", "proofs": [ "3zQZTFUqSPkHffWRqNPCnVdX4vSKxGxDBsvpXLDy2Wje6Utcpr9QnQx3LaB9hsf4w1um8ES1CrK4wPj8n1BcoaAv" ], "script": "base64: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", "chainId": 87, "height": 1467747, "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 2 #-}
2+{-# CONTENT_TYPE EXPRESSION #-}
3+let vecroPublicKey = tx.senderPublicKey
4+let triggerMinCost = 500000
5+let triggerMaxCost = 100000000
6+let aliasInit = Alias("init@vecr")
7+let aliasRandom = Alias("random@vecr")
8+let assetInit = base58'6wxhFXM88rv5QAXQofvhRgXdxt772TqoXSQ8P8nwtzcC'
9+let assetRandom = base58'F49165F3Y3cqVhYSe8M1nUN9CY7Yy6dgo2LgFEHQECM'
10+let codeR = toBytes("R")
11+let codeS = toBytes("S")
12+let codeSize = 45
13+let iSig = 0
14+let iRaw = 1
15+let iTrig = 2
16+let iInit = 3
17+match tx {
18+ case thisTx: TransferTransaction =>
19+ if (if (!(isDefined(thisTx.assetId)))
20+ then true
21+ else if ((thisTx.assetId != assetInit))
22+ then (thisTx.assetId != assetRandom)
23+ else false)
24+ then sigVerify(tx.bodyBytes, tx.proofs[iSig], vecroPublicKey)
25+ else match transactionById(thisTx.proofs[iTrig]) {
26+ case triggerTx: TransferTransaction =>
27+ if ((triggerTx.recipient == aliasInit))
28+ then {
29+ let initTx = thisTx
30+ let triggerInitTx = triggerTx
31+ let initTxbodyBytes = (initTx.bodyBytes + initTx.proofs[iTrig])
32+ let R = initTx.proofs[iRaw]
33+ if (if (if (if (if (if (if (if (if (!(isDefined(triggerInitTx.assetId)))
34+ then (triggerInitTx.amount >= triggerMinCost)
35+ else false)
36+ then (triggerInitTx.sender == initTx.recipient)
37+ else false)
38+ then !(isDefined(initTx.feeAssetId))
39+ else false)
40+ then if ((initTx.fee == triggerMaxCost))
41+ then true
42+ else (initTx.fee == triggerInitTx.amount)
43+ else false)
44+ then (initTx.assetId == assetInit)
45+ else false)
46+ then (initTx.amount == 1)
47+ else false)
48+ then (size(initTx.attachment) == codeSize)
49+ else false)
50+ then (initTx.attachment == toBytes(toBase58String((codeR + R))))
51+ else false)
52+ then sigVerify(initTxbodyBytes, initTx.proofs[iSig], vecroPublicKey)
53+ else false
54+ }
55+ else if ((triggerTx.recipient == aliasRandom))
56+ then match transactionById(thisTx.proofs[iInit]) {
57+ case initTx: TransferTransaction =>
58+ match transactionById(initTx.proofs[iTrig]) {
59+ case triggerInitTx: TransferTransaction =>
60+ if ((triggerInitTx.recipient == aliasInit))
61+ then {
62+ let randomTx = thisTx
63+ let triggerRandomTx = triggerTx
64+ let initTxbodyBytes = (initTx.bodyBytes + initTx.proofs[iTrig])
65+ let randomTxbodyBytes = ((randomTx.bodyBytes + randomTx.proofs[iTrig]) + randomTx.proofs[iInit])
66+ let R = initTx.proofs[iRaw]
67+ let S = thisTx.proofs[iRaw]
68+ let sig = (R + S)
69+ let msg = triggerRandomTx.attachment
70+ if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if ((triggerRandomTx.sender == triggerInitTx.sender))
71+ then (take(msg, codeSize) == initTx.attachment)
72+ else false)
73+ then sigVerify(msg, sig, vecroPublicKey)
74+ else false)
75+ then !(isDefined(triggerRandomTx.assetId))
76+ else false)
77+ then (triggerRandomTx.amount >= triggerMinCost)
78+ else false)
79+ then (triggerRandomTx.sender == randomTx.recipient)
80+ else false)
81+ then !(isDefined(randomTx.feeAssetId))
82+ else false)
83+ then if ((randomTx.fee == triggerMaxCost))
84+ then true
85+ else (randomTx.fee == triggerRandomTx.amount)
86+ else false)
87+ then (randomTx.assetId == assetRandom)
88+ else false)
89+ then (randomTx.amount == 1)
90+ else false)
91+ then (size(randomTx.attachment) == codeSize)
92+ else false)
93+ then (randomTx.attachment == toBytes(toBase58String((codeS + S))))
94+ else false)
95+ then sigVerify(randomTxbodyBytes, randomTx.proofs[iSig], vecroPublicKey)
96+ else false)
97+ then !(isDefined(triggerInitTx.assetId))
98+ else false)
99+ then (triggerInitTx.amount >= triggerMinCost)
100+ else false)
101+ then (triggerInitTx.sender == initTx.recipient)
102+ else false)
103+ then !(isDefined(initTx.feeAssetId))
104+ else false)
105+ then if ((initTx.fee == triggerMaxCost))
106+ then true
107+ else (initTx.fee == triggerInitTx.amount)
108+ else false)
109+ then (initTx.assetId == assetInit)
110+ else false)
111+ then (initTx.amount == 1)
112+ else false)
113+ then (size(initTx.attachment) == codeSize)
114+ else false)
115+ then (initTx.attachment == toBytes(toBase58String((codeR + R))))
116+ else false)
117+ then sigVerify(initTxbodyBytes, initTx.proofs[iSig], vecroPublicKey)
118+ else false
119+ }
120+ else false
121+ case _ =>
122+ false
123+ }
124+ case _ =>
125+ false
126+ }
127+ else false
128+ case _ =>
129+ false
130+ }
131+ case dataTx: DataTransaction =>
132+ sigVerify(tx.bodyBytes, tx.proofs[iSig], vecroPublicKey)
133+ case _ =>
134+ false
135+}

github/deemru/w8io/3ef1775 
46.11 ms