tx · 47qw89nafuoj7ZUXCZezfGbc1oGYmmnuw4pMZL3BjssC

3PALtWBkUP7Wg2mRCyW9u3Cf34ATC7XeEud:  -0.01400000 Waves

2020.04.02 15:36 [1999783] smart account 3PALtWBkUP7Wg2mRCyW9u3Cf34ATC7XeEud > SELF 0.00000000 Waves

{ "type": 13, "id": "47qw89nafuoj7ZUXCZezfGbc1oGYmmnuw4pMZL3BjssC", "fee": 1400000, "feeAssetId": null, "timestamp": 1585831003007, "version": 1, "sender": "3PALtWBkUP7Wg2mRCyW9u3Cf34ATC7XeEud", "senderPublicKey": "EcJEh4k1HSFdGmum1fpS7iPt3vus37RN4nhhJzwnDRbZ", "proofs": [ "4u9KvQm9HV7oQXvyfyxrp5ruWYRuZEm7zkBVxUJ9xj6jzCTdyvgm2jnizk3JXc3Knsmm4crizsQhortZH76MFC7F" ], "script": "base64:AAIDAAAAAAAAABcIARIJCgcICAgICAgBEgASABIECgIBCAAAABUAAAAAD21ha2VyQWRkcmVzc0tleQIAAAAMbWFrZXJBZGRyZXNzAAAAABBvcmFjbGVBZGRyZXNzS2V5AgAAAA1vcmFjbGVBZGRyZXNzAAAAAAxtYWluVG9rZW5LZXkCAAAACW1haW5Ub2tlbgAAAAARc3RhcnREZWNsaW5pbmdLZXkCAAAADnN0YXJ0RGVjbGluaW5nAAAAAA1pbmNyZWFzaW5nS2V5AgAAAAppbmNyZWFzaW5nAAAAAAl3aW5uZXJLZXkCAAAABndpbm5lcgAAAAALbGVzc1RoYW5LZXkCAAAACGxlc3NUaGFuAAAAAAtzZXF1ZW5jZUtleQIAAAAIc2VxdWVuY2UAAAAACnRpbWVvdXRLZXkCAAAADHRpbWVvdXRMYWJlbAAAAAAPcmVkZWVtSGVpZ2h0S2V5AgAAAAxyZWRlZW1IZWlnaHQAAAAACW1haW5Ub2tlbgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAABHRoaXMFAAAADG1haW5Ub2tlbktleQIAAAAabWFpblRva2VuIG5vdCBpbml0aXRhbGl6ZWQAAAAADG1ha2VyQWRkcmVzcwkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAABHRoaXMFAAAAD21ha2VyQWRkcmVzc0tleQIAAAAVbWFrZXIgbm90IGluaXRpYWxpemVkAAAAAA1vcmFjbGVBZGRyZXNzCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAAQb3JhY2xlQWRkcmVzc0tleQIAAAAWb3JhY2xlIG5vdCBpbml0aWFsaXplZAAAAAAOc3RhcnREZWNsaW5pbmcJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAR0aGlzBQAAABFzdGFydERlY2xpbmluZ0tleQIAAAAfc3RhcnREZWNsaW5pbmcgbm90IGluaXRpdGFsaXplZAAAAAAKaW5jcmVhc2luZwkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAABHRoaXMFAAAADWluY3JlYXNpbmdLZXkCAAAAG2luY3JlYXNpbmcgbm90IGluaXRpdGFsaXplZAAAAAAMcmVkZWVtSGVpZ2h0CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAAPcmVkZWVtSGVpZ2h0S2V5AgAAABlyZWRlZW0gaGVpZ2h0IG5vdCBkZWZpbmVkAAAAAAZ3aW5uZXIJAAQdAAAAAgUAAAAEdGhpcwUAAAAJd2lubmVyS2V5AAAAAAhsZXNzVGhhbgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAC2xlc3NUaGFuS2V5AgAAABFtaW4gZG9lc24ndCBleGlzdAAAAAAIc2VxdWVuY2UJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAR0aGlzBQAAAAtzZXF1ZW5jZUtleQIAAAAWc2VxdWVuY2UgZG9lc24ndCBleGlzdAAAAAAMdGltZW91dExhYmVsCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAAKdGltZW91dEtleQIAAAARbm8gZXhwaXJhdGlvbiBzZXQAAAAAEHNlcXVlbmNlU3BsaXR0ZXICAAAAAXwAAAAEAAAAAWkBAAAABGluaXQAAAAHAAAABW1ha2VyAAAACW1haW5Ub2tlbgAAAA5zdGFydERlY2xpbmluZwAAAAppbmNyZWFzaW5nAAAAB3RpbWVvdXQAAAAGb3JhY2xlAAAADmlnbm9yZUxlc3NUaGFuAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzCQAAAgAAAAECAAAAGW9ubHkgZGFwcCBpdHNlbGYgY2FuIGluaXQDCQEAAAAJaXNEZWZpbmVkAAAAAQkABB0AAAACBQAAAAR0aGlzBQAAAA9tYWtlckFkZHJlc3NLZXkJAAACAAAAAQIAAAATYWxyZWFkeSBpbml0aWFsaXplZAkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAPbWFrZXJBZGRyZXNzS2V5BQAAAAVtYWtlcgkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUA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", "chainId": 87, "height": 1999783, "spentComplexity": 0 } View: original | compacted Prev: BQskYrqAFnbuNPnPTyHrtdQkvwTqKfNVrgupDTEruuQY Next: none Diff:
OldNewDifferences
1919
2020 let timeoutKey = "timeoutLabel"
2121
22+let redeemHeightKey = "redeemHeight"
23+
2224 let mainToken = valueOrErrorMessage(getString(this, mainTokenKey), "mainToken not inititalized")
2325
2426 let makerAddress = valueOrErrorMessage(getString(this, makerAddressKey), "maker not initialized")
2830 let startDeclining = valueOrErrorMessage(getString(this, startDecliningKey), "startDeclining not inititalized")
2931
3032 let increasing = valueOrErrorMessage(getString(this, increasingKey), "increasing not inititalized")
33+
34+let redeemHeight = valueOrErrorMessage(getInteger(this, redeemHeightKey), "redeem height not defined")
3135
3236 let winner = getString(this, winnerKey)
3337
6973
7074
7175 @Callable(i)
72-func redeem () = match winner {
73- case s: String =>
74- let message = (("payment in " + s) + " must be attached")
75- let tkn = (s == toBase58String(valueOrErrorMessage(valueOrErrorMessage(i.payment, message).assetId, message)))
76- let amt = valueOrErrorMessage(i.payment, message).amount
77- if (tkn)
78- then TransferSet([ScriptTransfer(i.caller, amt, fromBase58String(mainToken))])
79- else throw(message)
80- case _ =>
81- throw("not defined yet")
82-}
76+func redeem () = if ((redeemHeight > height))
77+ then throw(("redeem starts after block " + toString(redeemHeight)))
78+ else match winner {
79+ case s: String =>
80+ let message = (("payment in " + s) + " must be attached")
81+ let tkn = (s == toBase58String(valueOrErrorMessage(valueOrErrorMessage(i.payment, message).assetId, message)))
82+ let amt = valueOrErrorMessage(i.payment, message).amount
83+ if (tkn)
84+ then TransferSet([ScriptTransfer(i.caller, amt, fromBase58String(mainToken))])
85+ else throw(message)
86+ case _ =>
87+ throw("not defined yet")
88+ }
8389
8490
8591
8793 func registerItem (newEntry,label) = {
8894 func detectDecline () = {
8995 let data = split(sequence, sequenceSplitter)
90- if (if ((lessThan > newEntry))
91- then true
92- else (14 > size(data)))
96+ if ((14 > size(data)))
9397 then false
9498 else {
9599 let today = newEntry
96- let weekBefore = parseIntValue(data[6])
97- let twoWeeksBefore = parseIntValue(data[13])
98- ((weekBefore - twoWeeksBefore) > (today - weekBefore))
100+ if ((parseIntValue(data[0]) > today))
101+ then throw("bad value: new entry value less than yesterday's")
102+ else {
103+ let weekBefore = parseIntValue(data[6])
104+ let twoWeeksBefore = parseIntValue(data[13])
105+ ((weekBefore - twoWeeksBefore) > (today - weekBefore))
106+ }
99107 }
100108 }
101109
102110 if ((toBase58String(i.caller.bytes) != oracleAddress))
103111 then throw("only oracle can do")
104- else if (isDefined(winner))
112+ else if (if (isDefined(winner))
113+ then (value(winner) != "")
114+ else false)
105115 then throw("winner already defined")
106116 else if (isDefined(getInteger(this, label)))
107117 then throw(("already registered for " + label))
109119 let timeout = (label == timeoutLabel)
110120 let decline = detectDecline()
111121 let items = [DataEntry(sequenceKey, ((toString(newEntry) + sequenceSplitter) + sequence)), DataEntry(label, newEntry)]
122+ let heightEntry = DataEntry(redeemHeightKey, (height + 1440))
112123 WriteSet(if (decline)
113- then DataEntry(winnerKey, startDeclining) :: items
124+ then [DataEntry(winnerKey, startDeclining), heightEntry] :: items
114125 else if (timeout)
115- then DataEntry(winnerKey, increasing) :: items
126+ then [DataEntry(winnerKey, increasing), heightEntry] :: items
116127 else items)
117128 }
118129 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let makerAddressKey = "makerAddress"
55
66 let oracleAddressKey = "oracleAddress"
77
88 let mainTokenKey = "mainToken"
99
1010 let startDecliningKey = "startDeclining"
1111
1212 let increasingKey = "increasing"
1313
1414 let winnerKey = "winner"
1515
1616 let lessThanKey = "lessThan"
1717
1818 let sequenceKey = "sequence"
1919
2020 let timeoutKey = "timeoutLabel"
2121
22+let redeemHeightKey = "redeemHeight"
23+
2224 let mainToken = valueOrErrorMessage(getString(this, mainTokenKey), "mainToken not inititalized")
2325
2426 let makerAddress = valueOrErrorMessage(getString(this, makerAddressKey), "maker not initialized")
2527
2628 let oracleAddress = valueOrErrorMessage(getString(this, oracleAddressKey), "oracle not initialized")
2729
2830 let startDeclining = valueOrErrorMessage(getString(this, startDecliningKey), "startDeclining not inititalized")
2931
3032 let increasing = valueOrErrorMessage(getString(this, increasingKey), "increasing not inititalized")
33+
34+let redeemHeight = valueOrErrorMessage(getInteger(this, redeemHeightKey), "redeem height not defined")
3135
3236 let winner = getString(this, winnerKey)
3337
3438 let lessThan = valueOrErrorMessage(getInteger(this, lessThanKey), "min doesn't exist")
3539
3640 let sequence = valueOrErrorMessage(getString(this, sequenceKey), "sequence doesn't exist")
3741
3842 let timeoutLabel = valueOrErrorMessage(getString(this, timeoutKey), "no expiration set")
3943
4044 let sequenceSplitter = "|"
4145
4246 @Callable(i)
4347 func init (maker,mainToken,startDeclining,increasing,timeout,oracle,ignoreLessThan) = if ((i.caller != this))
4448 then throw("only dapp itself can init")
4549 else if (isDefined(getString(this, makerAddressKey)))
4650 then throw("already initialized")
4751 else WriteSet([DataEntry(makerAddressKey, maker), DataEntry(oracleAddressKey, oracle), DataEntry(startDecliningKey, startDeclining), DataEntry(increasingKey, increasing), DataEntry(mainTokenKey, mainToken), DataEntry(sequenceKey, "0"), DataEntry(timeoutKey, timeout), DataEntry(lessThanKey, ignoreLessThan)])
4852
4953
5054
5155 @Callable(i)
5256 func issue () = if ((toBase58String(i.caller.bytes) != makerAddress))
5357 then throw("only maker can do")
5458 else match i.payment {
5559 case a: AttachedPayment =>
5660 let amount = match a.assetId {
5761 case b: ByteVector =>
5862 if ((toBase58String(b) != mainToken))
5963 then throw(("main token not supplied, expecting " + mainToken))
6064 else a.amount
6165 case _ =>
6266 throw("main token not supplied")
6367 }
6468 TransferSet([ScriptTransfer(i.caller, amount, fromBase58String(startDeclining)), ScriptTransfer(i.caller, amount, fromBase58String(increasing))])
6569 case _ =>
6670 throw("payment in maintoken must be attached")
6771 }
6872
6973
7074
7175 @Callable(i)
72-func redeem () = match winner {
73- case s: String =>
74- let message = (("payment in " + s) + " must be attached")
75- let tkn = (s == toBase58String(valueOrErrorMessage(valueOrErrorMessage(i.payment, message).assetId, message)))
76- let amt = valueOrErrorMessage(i.payment, message).amount
77- if (tkn)
78- then TransferSet([ScriptTransfer(i.caller, amt, fromBase58String(mainToken))])
79- else throw(message)
80- case _ =>
81- throw("not defined yet")
82-}
76+func redeem () = if ((redeemHeight > height))
77+ then throw(("redeem starts after block " + toString(redeemHeight)))
78+ else match winner {
79+ case s: String =>
80+ let message = (("payment in " + s) + " must be attached")
81+ let tkn = (s == toBase58String(valueOrErrorMessage(valueOrErrorMessage(i.payment, message).assetId, message)))
82+ let amt = valueOrErrorMessage(i.payment, message).amount
83+ if (tkn)
84+ then TransferSet([ScriptTransfer(i.caller, amt, fromBase58String(mainToken))])
85+ else throw(message)
86+ case _ =>
87+ throw("not defined yet")
88+ }
8389
8490
8591
8692 @Callable(i)
8793 func registerItem (newEntry,label) = {
8894 func detectDecline () = {
8995 let data = split(sequence, sequenceSplitter)
90- if (if ((lessThan > newEntry))
91- then true
92- else (14 > size(data)))
96+ if ((14 > size(data)))
9397 then false
9498 else {
9599 let today = newEntry
96- let weekBefore = parseIntValue(data[6])
97- let twoWeeksBefore = parseIntValue(data[13])
98- ((weekBefore - twoWeeksBefore) > (today - weekBefore))
100+ if ((parseIntValue(data[0]) > today))
101+ then throw("bad value: new entry value less than yesterday's")
102+ else {
103+ let weekBefore = parseIntValue(data[6])
104+ let twoWeeksBefore = parseIntValue(data[13])
105+ ((weekBefore - twoWeeksBefore) > (today - weekBefore))
106+ }
99107 }
100108 }
101109
102110 if ((toBase58String(i.caller.bytes) != oracleAddress))
103111 then throw("only oracle can do")
104- else if (isDefined(winner))
112+ else if (if (isDefined(winner))
113+ then (value(winner) != "")
114+ else false)
105115 then throw("winner already defined")
106116 else if (isDefined(getInteger(this, label)))
107117 then throw(("already registered for " + label))
108118 else {
109119 let timeout = (label == timeoutLabel)
110120 let decline = detectDecline()
111121 let items = [DataEntry(sequenceKey, ((toString(newEntry) + sequenceSplitter) + sequence)), DataEntry(label, newEntry)]
122+ let heightEntry = DataEntry(redeemHeightKey, (height + 1440))
112123 WriteSet(if (decline)
113- then DataEntry(winnerKey, startDeclining) :: items
124+ then [DataEntry(winnerKey, startDeclining), heightEntry] :: items
114125 else if (timeout)
115- then DataEntry(winnerKey, increasing) :: items
126+ then [DataEntry(winnerKey, increasing), heightEntry] :: items
116127 else items)
117128 }
118129 }
119130
120131

github/deemru/w8io/873ac7e 
63.42 ms