tx · 79zCJM8GAUjZ1J8Tkd7ixmv3XJPfBjWBDvyUSLJWBSYM

3N7hFU6dFSFKGGwDyF9WJ1jVsrB9w8RHT37:  -0.01000000 Waves

2023.03.01 14:23 [2470938] smart account 3N7hFU6dFSFKGGwDyF9WJ1jVsrB9w8RHT37 > SELF 0.00000000 Waves

{ "type": 13, "id": "79zCJM8GAUjZ1J8Tkd7ixmv3XJPfBjWBDvyUSLJWBSYM", "fee": 1000000, "feeAssetId": null, "timestamp": 1677669826091, "version": 2, "chainId": 84, "sender": "3N7hFU6dFSFKGGwDyF9WJ1jVsrB9w8RHT37", "senderPublicKey": "J6bcbr8r9usSLYw72NzzrKVCvKDDLe1uDx8bnWp3uFAV", "proofs": [ "3tmo52sPNd8sVLTA36QQfDzc2NJE1oGJkqvRiTcxF4gfz4rchQ49LPVqp46RFdx13pMmaf5gvKgcGhcw6KJWhoZY" ], "script": "base64:BgIECAISAAIAEG5ldXRyaW5vQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQECIzNOOWJlMm13ckE1MldKaG82RGllc1prazQzNTFHdnBuV3VqAA5zZWNvbmRDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM042b1FtVWFucDRUV3VIbnY1cm1hNFd2ZVZ1YjYzSlJGQjIBAWkBEmRvdWJsZUluZGlyZWN0U3dhcAAEBXN3YXAwCQD8BwQFEG5ldXRyaW5vQ29udHJhY3QCE3N3YXBUb2tlblRvTmV1dHJpbm8FA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEdW5pdADAhD0FA25pbAMJAAACBQVzd2FwMAUFc3dhcDAEBXN3YXAxCQD8BwQFDnNlY29uZENvbnRyYWN0AgxpbmRpcmVjdFN3YXAFA25pbAUDbmlsAwkAAAIFBXN3YXAxBQVzd2FwMQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAIM5rpU=", "height": 2470938, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FX6dTevMCcgLnir8vUMaqu18wz1YHqn521sb5XHX97yM Next: HqMnXKWKf5Wqn9d3AKNzH9hBbqT3WqRSc83ijnkiAQ2b Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = ""
4+let a = addressFromStringValue("3N9be2mwrA52WJho6DiesZkk4351GvpnWuj")
55
6-let b = "__"
6+let b = addressFromStringValue("3N6oQmUanp4TWuHnv5rma4WveVub63JRFB2")
77
8-let c = ":"
9-
10-let d = 500000
11-
12-let e = "https://forum.neutrino.at/"
13-
14-let f = 250
15-
16-let g = 250
17-
18-let h = 1209600000
19-
20-let i = 1000000
21-
22-let j = 1000000000
23-
24-let k = 1000000000
25-
26-let l = 7200000
27-
28-let m = 5400000
29-
30-let n = 111
31-
32-let o = 1
33-
34-let p = 2
35-
36-let q = 3
37-
38-let r = 4
39-
40-let s = 5
41-
42-let t = 6
43-
44-let u = 7
45-
46-let v = 8
47-
48-let w = 9
49-
50-let x = 10
51-
52-let y = 11
53-
54-let z = 1
55-
56-let A = 2
57-
58-let B = 3
59-
60-let C = 4
61-
62-let D = 5
63-
64-let E = 6
65-
66-let F = 7
67-
68-func G (H,I) = valueOrErrorMessage(getString(H, I), makeString(["mandatory ", toString(H), ".", I, " is not defined"], ""))
69-
70-
71-func J (I,K) = valueOrElse(getInteger(this, I), K)
72-
73-
74-let L = 1
75-
76-let M = 2
77-
78-let N = 3
79-
80-let O = 4
81-
82-let P = 5
83-
84-let Q = 6
85-
86-let R = 7
87-
88-let S = 8
89-
90-let T = 9
91-
92-let U = 10
93-
94-let V = 11
95-
96-let W = 12
97-
98-let X = 13
99-
100-func Y () = "%s%s__config__controlAddress"
101-
102-
103-func Z () = "%s__controlConfig"
104-
105-
106-func aa (ab) = split_4C(G(ab, Z()), b)
107-
108-
109-func ac (ad,ae) = valueOrErrorMessage(addressFromString(ad[ae]), ("Control cfg doesn't contain address at index " + toString(ae)))
110-
111-
112-let af = addressFromStringValue(valueOrElse(getString(this, Y()), "3P5Bfd58PPfNvBM2Hy8QfbcDqMeNtzg7KfP"))
113-
114-let ad = aa(af)
115-
116-let ag = ac(ad, L)
117-
118-let ah = ac(ad, V)
119-
120-func ai (aj) = ("%s%s__quorumRequired__" + aj)
121-
122-
123-func ak () = "%s__paymentRequired"
124-
125-
126-func al () = "%s__gNsbtRequired"
127-
128-
129-func am () = "%s__proposalId"
130-
131-
132-func an () = "%s__firstProposalId"
133-
134-
135-func ao () = "%s__updateVersion"
136-
137-
138-func ap (aq) = ("%s%d__proposalStatusData__" + toString(aq))
139-
140-
141-func ar (aq) = ("%s%d__proposalData__" + toString(aq))
142-
143-
144-func as (aq,at) = makeString(["%s%d%d", "votesByOpt", toString(aq), toString(at)], b)
145-
146-
147-func au (aq,av) = makeString(["%s%d%s", "votesByUser", toString(aq), av], b)
148-
149-
150-func aw (aq,av) = makeString(["%s%d%s", "optionByUser", toString(aq), av], b)
151-
152-
153-func ax () = "%s__applyInProgress"
154-
155-
156-func ay (az) = ("%s%d__proposalIdByTopicId__" + toString(az))
157-
158-
159-func aA (av) = ("%s%s_userGnsbtReleaseTime__" + av)
160-
161-
162-func aB (aq) = ("%s%d__numVoters__" + toString(aq))
163-
164-
165-func aC () = "%s%s%s__stats__avg__uniqueVoters"
166-
167-
168-func aD () = "%s%s%s__stats__avg__gnsbtVoted"
169-
170-
171-func aE () = "%s%s__stats__uniqueAuthors"
172-
173-
174-func aF (aG) = ("%s%s__numProposalsByAuthor__" + aG)
175-
176-
177-func aH (aI) = ("%s%d__applyHistory__" + toString(aI))
178-
179-
180-func aJ (aK) = {
181- let aL = aK
182- if ($isInstanceOf(aL, "List[Any]"))
8+@Callable(c)
9+func doubleIndirectSwap () = {
10+ let d = invoke(a, "swapTokenToNeutrino", nil, [AttachedPayment(unit, 1000000)])
11+ if ((d == d))
18312 then {
184- let aM = aL
185- aM
13+ let e = invoke(b, "indirectSwap", nil, nil)
14+ if ((e == e))
15+ then nil
16+ else throw("Strict value is not equal to itself.")
18617 }
187- else throw("fail to cast into List[Any]")
188- }
189-
190-
191-func aN (aK) = {
192- let aL = aK
193- if ($isInstanceOf(aL, "Int"))
194- then {
195- let aO = aL
196- aO
197- }
198- else throw("fail to cast into Int")
199- }
200-
201-
202-func aP (aQ,aR,aS,aT,aU,aV,aW) = makeString(["%b%d%d%d%b%d%b", toString(aQ), toString(aR), toString(aS), toString(aT), toString(aU), toString(aV), toString(aW)], b)
203-
204-
205-func aX (aY,aj,aZ,ba,bb,bc,bd,be,bf,bg,bh) = makeString(["%s%s%s%s%s%d%d%d%s%d%s", aY, aj, aZ, ba, bb, toString(bc), toString(bd), toString(be), bf, toString(bg), bh], b)
206-
207-
208-func bi (bj) = if ((size(bj) > 20))
209- then throw(("Too many transactions: " + toString(size(bj))))
210- else {
211- func bk (bl,bm) = if ((size(fromBase58String(bm)) != 32))
212- then throw(("Wrong txId: " + bm))
213- else if ((bl == ""))
214- then bm
215- else ((bl + c) + bm)
216-
217- let bn = bj
218- let bo = size(bn)
219- let bp = ""
220- func bq (br,bs) = if ((bs >= bo))
221- then br
222- else bk(br, bn[bs])
223-
224- func bt (br,bs) = if ((bs >= bo))
225- then br
226- else throw("List size exceeds 20")
227-
228- bt(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bp, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
229- }
230-
231-
232-let bu = 0
233-
234-let bv = 1
235-
236-func bw (bx) = {
237- let by = aJ(invoke(ah, "gnsbtInfoSYSREADONLY", [bx, 0, 0], nil))
238- let bz = aJ(by[2])
239- let bA = aN(bz[2])
240- let bB = aN(bz[3])
241- let bC = aN(by[9])
242- let bD = aN(by[6])
243-[(bB + bD), (bA + bC)]
244- }
245-
246-
247-func bE (bF) = if ((value(indexOf(bF, e)) != 0))
248- then throw("Invalid url")
249- else if ((size(bF) > g))
250- then throw("Url too long!")
251- else {
252- let az = valueOrErrorMessage(parseInt(drop(bF, (value(lastIndexOf(bF, "/")) + 1))), "Wrong topicId")
253- let bG = getInteger(ay(az))
254- if (isDefined(bG))
255- then throw(("Voting with such forum link is already registered by id=" + toString(value(bG))))
256- else az
257- }
258-
259-
260-func bH (bI,aY,aj,aZ,ba,bb,bd,be,bJ,bj,bK) = if ((bI.assetId != unit))
261- then throw("Allowed WAVES payment only!")
262- else {
263- let bL = J(ak(), j)
264- if ((bL > bI.amount))
265- then throw(("Payment attached should be at least " + toString(bL)))
266- else {
267- let az = bE(ba)
268- if ((bb == ""))
269- then throw("Title is empty")
270- else if ((size(bb) > f))
271- then throw("Too long title")
272- else {
273- let bc = lastBlock.timestamp
274- if ((bc > bd))
275- then throw(((("votingStartTime=" + toString(bd)) + " < proposalTime=") + toString(bc)))
276- else if ((bd > be))
277- then throw(((("votingEndTime=" + toString(be)) + " < votingStartTime=") + toString(bd)))
278- else if (((be - bd) > h))
279- then throw(((("Voting period exceeds max: " + toString((be - bd))) + " > ") + toString(h)))
280- else {
281- let bf = if ((aj == "IDEA"))
282- then ""
283- else bi(bj)
284- if ((1 >= size(bK)))
285- then throw("Too few choices to vote")
286- else {
287- let bM = bw(aZ)
288- let bN = bM[bu]
289- let bO = bM[bv]
290- let bP = J(al(), k)
291- if ((bP > bO))
292- then throw((("You need at least " + toString(bP)) + " gNsbt to create voting"))
293- else {
294- let bQ = invoke(ag, "acceptWaves", nil, [bI])
295- if ((bQ == bQ))
296- then {
297- let bR = J(ai(aj), d)
298- let bg = fraction(bR, bN, i)
299- let aq = (J(am(), 0) + 1)
300- let bS = (J(aF(aZ), 0) + 1)
301- let bT = (J(aE(), 0) + (if ((bS == 1))
302- then 1
303- else 0))
304- let bU = makeString(bK, c)
305- $Tuple2([IntegerEntry(am(), aq), IntegerEntry(ay(az), aq), StringEntry(ap(aq), aP(false, 0, 0, 0, false, 0, false)), StringEntry(ar(aq), aX(aY, aj, aZ, toBase58String(toBytes(ba)), toBase58String(toBytes(bb)), bc, bd, be, bf, bg, bU)), IntegerEntry(aF(aZ), bS), IntegerEntry(aE(), bT)], aY)
306- }
307- else throw("Strict value is not equal to itself.")
308- }
309- }
310- }
311- }
312- }
313- }
314-
315-
316-func bV (aq,bK,bW,bX,bY,bZ,ca) = {
317- func cb (bl,cc) = {
318- let ae = value(indexOf(bK, cc))
319- let cd = if (bW)
320- then if ((ae == bZ))
321- then ca
322- else J(as(aq, ae), 0)
323- else if ((ae == value(bX)))
324- then bY
325- else if ((ae == bZ))
326- then ca
327- else J(as(aq, ae), 0)
328- if ((bl._2 > cd))
329- then bl
330- else $Tuple2(ae, cd)
331- }
332-
333- let bn = bK
334- let bo = size(bn)
335- let bp = $Tuple2(0, 0)
336- func bq (br,bs) = if ((bs >= bo))
337- then br
338- else cb(br, bn[bs])
339-
340- func bt (br,bs) = if ((bs >= bo))
341- then br
342- else throw("List size exceeds 10")
343-
344- bt(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bp, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
345- }
346-
347-
348-func ce (cf,cg,ch,ci) = makeString(["%b%d%d%d%b%d%b", toString(cg), toString(ch._1), toString(ch._2), toString(ci), cf[D], cf[E], cf[F]], b)
349-
350-
351-func cj (cf) = makeString(["%b%d%d%d%b%d%b", cf[z], cf[A], cf[B], cf[C], "true", cf[E], cf[F]], b)
352-
353-
354-func ck (cl,bb,bF,aq) = {
355- let bN = bw("")[bu]
356- let cm = 500000
357- StringEntry(aH(lastBlock.timestamp), makeString(["%d%d%d%s%s%d", toString(cl), toString(bN), toString(cm), bb, bF, toString(aq)], b))
358- }
359-
360-
361-@Callable(aO)
362-func constructorV1 (cn,co,cp,cq,cr) = if ((aO.caller != this))
363- then throw("Permission denied")
364- else [StringEntry(Y(), cn), IntegerEntry(al(), co), IntegerEntry(ak(), cp), IntegerEntry(ai("IDEA"), cq), IntegerEntry(ai("UPDATE"), cr)]
365-
366-
367-
368-@Callable(aO)
369-func castVote (aq,cs) = {
370- let ct = toString(aO.caller)
371- let cu = split(G(this, ap(aq)), b)
372- if ((cu[F] == "true"))
373- then throw("Voting is canceled by team")
374- else {
375- let cv = split(G(this, ar(aq)), b)
376- let cw = parseIntValue(cv[u])
377- let cx = parseIntValue(cv[v])
378- let cy = lastBlock.timestamp
379- if ((cw > cy))
380- then throw("Voting not started yet")
381- else if ((cy >= cx))
382- then throw("Voting already finished")
383- else {
384- let cz = split(cv[y], c)
385- let cA = size(cz)
386- if ((1 >= cA))
387- then throw("Too few choices to vote")
388- else if ((cs >= cA))
389- then throw(("Unknown choice! Must be 0.." + toString((cA - 1))))
390- else {
391- let bM = bw(ct)
392- let cB = bM[bv]
393- if ((0 >= cB))
394- then throw("no gnsbt to vote")
395- else {
396- let bN = bM[bu]
397- let bX = getInteger(aw(aq, ct))
398- let cC = if (!(isDefined(bX)))
399- then 0
400- else J(au(aq, ct), 0)
401- let cD = if (isDefined(bX))
402- then J(as(aq, value(bX)), 0)
403- else 0
404- let cE = J(as(aq, cs), 0)
405- let cF = parseIntValue(cu[C])
406- let cG = if (!(isDefined(bX)))
407- then 0
408- else ((cD - cC) + (if ((value(bX) == cs))
409- then cB
410- else 0))
411- let ca = if (if (isDefined(bX))
412- then (value(bX) == cs)
413- else false)
414- then cG
415- else (cE + cB)
416- let cH = ((cF - cC) + cB)
417- let cI = (cH >= parseIntValue(cv[x]))
418- let cJ = J(aB(aq), 0)
419- let cK = J(aC(), 0)
420- let cL = ((getIntegerValue(am()) - valueOrElse(getInteger(an()), n)) + 1)
421- let cM = if ((cC == 0))
422- then 1
423- else 0
424- let cN = (cK + fraction(cM, i, cL))
425- let cO = J(aD(), 0)
426- let cP = (cO + ((cB - cC) / cL))
427- let bW = if (!(isDefined(bX)))
428- then true
429- else (value(bX) == cs)
430- let bY = if (bW)
431- then nil
432- else [IntegerEntry(as(aq, value(bX)), cG)]
433- let cQ = bV(aq, cz, bW, bX, cG, cs, ca)
434- let cR = max([cx, J(aA(ct), 0)])
435- $Tuple2(([IntegerEntry(aw(aq, ct), cs), IntegerEntry(au(aq, ct), cB), IntegerEntry(as(aq, cs), ca), IntegerEntry(aB(aq), (cJ + cM)), IntegerEntry(aA(ct), cR), IntegerEntry(aC(), cN), IntegerEntry(aD(), cP), StringEntry(ap(aq), ce(cu, cI, cQ, cH))] ++ bY), unit)
436- }
437- }
438- }
439- }
440- }
441-
442-
443-
444-@Callable(aO)
445-func initiateIdeaVoting (ba,bb,bd,be,bK) = if ((size(aO.payments) != 1))
446- then throw("Exactly one payment required")
447- else if ((size(bK) != 2))
448- then throw("Exactly 2 option ['NO', 'YES'] are expected")
449- else if ((bK[0] != "NO"))
450- then throw("Option NO should be the first")
451- else if ((bK[1] != "YES"))
452- then throw("Option YES should be the second")
453- else bH(value(aO.payments[0]), toBase58String(aO.transactionId), "IDEA", toString(aO.caller), ba, bb, bd, be, "PENDING", nil, bK)
454-
455-
456-
457-@Callable(aO)
458-func initiateUpdateVoting (ba,bb,bd,be,bj) = if ((size(aO.payments) != 1))
459- then throw("Exactly one payment required")
460- else if ((1 > size(bj)))
461- then throw("Transactions list is empty")
462- else bH(value(aO.payments[0]), toBase58String(aO.transactionId), "UPDATE", toString(aO.caller), ba, bb, bd, be, "PENDING", bj, ["NO", "YES"])
463-
464-
465-
466-@Callable(aO)
467-func cancelVoting (aq) = if ((aO.caller != this))
468- then throw("not authorized")
469- else {
470- let cS = G(this, ap(aq))
471- let cT = ((take(cS, value(lastIndexOf(cS, b))) + b) + "true")
472- $Tuple2([StringEntry(ap(aq), cT)], unit)
473- }
474-
475-
476-
477-@Callable(aO)
478-func applyUpdate (aq) = {
479- let cv = split(G(this, ar(aq)), b)
480- let cx = parseIntValue(cv[v])
481- let cy = lastBlock.timestamp
482- if ((cx > cy))
483- then throw("Voting is not finished yet")
484- else if (("UPDATE" != cv[p]))
485- then throw("Only UPDATE type can be applied")
486- else {
487- let cu = split(G(this, ap(aq)), b)
488- if ((cu[F] == "true"))
489- then throw("Voting is canceled")
490- else if ((cu[z] != "true"))
491- then throw("Voting status invalid")
492- else if ((cu[A] != "1"))
493- then throw("Winner is 'NO' - nothing to apply")
494- else if ((cu[D] == "true"))
495- then throw("Scripts are already applied")
496- else {
497- let cU = parseIntValue(cu[E])
498- if (((cy - l) > cU))
499- then throw((("Scripts timestamp=" + toString(cU)) + " is too far in the past, max 2 hrs allowed"))
500- else if ((cU > (cy + m)))
501- then throw((("Scripts timestamp=" + toString(cU)) + " is too far in the future, max 1.5 hrs allowed"))
502- else {
503- let cV = J(ax(), -1)
504- if ((cV != -1))
505- then throw((("proposalId=" + toString(cV)) + " is already being applied. Finish it first!"))
506- else {
507- let cW = invoke(af, "callEmergencyShutdown", ["Applying Governance UPDATE"], nil)
508- if ((cW == cW))
509- then $Tuple2([IntegerEntry(ax(), aq)], unit)
510- else throw("Strict value is not equal to itself.")
511- }
512- }
513- }
514- }
515- }
516-
517-
518-
519-@Callable(aO)
520-func finishApply () = {
521- let aq = valueOrErrorMessage(getInteger(ax()), "No apply in progress, nothing to finish")
522- let cv = split(G(this, ar(aq)), b)
523- let bj = split(cv[w], c)
524- let cu = split(G(this, ap(aq)), b)
525- if ((cu[D] == "true"))
526- then throw("Scripts are already applied")
527- else {
528- func cX (bl,bm) = if (!(isDefined(transactionHeightById(fromBase58String(bm)))))
529- then throw(("NOT applied txId: " + bm))
530- else unit
531-
532- let cY = {
533- let bn = bj
534- let bo = size(bn)
535- let bp = unit
536- func bq (br,bs) = if ((bs >= bo))
537- then br
538- else cX(br, bn[bs])
539-
540- func bt (br,bs) = if ((bs >= bo))
541- then br
542- else throw("List size exceeds 20")
543-
544- bt(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bp, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
545- }
546- let cZ = (J(ao(), 0) + 1)
547- $Tuple2([DeleteEntry(ax()), IntegerEntry(ao(), cZ), StringEntry(ap(aq), cj(cu)), ck(cZ, cv[s], cv[r], aq)], cY)
548- }
18+ else throw("Strict value is not equal to itself.")
54919 }
55020
55121

github/deemru/w8io/169f3d6 
59.62 ms