tx · 3WKsWdtZzswcXf8JHZTUjyakcXGoVk3928Jzx8fhW8n1

3PPod6TWkaqUd5Hx2CkM236PFPreqLu1nhN:  -0.00600000 Waves

2022.09.18 00:08 [3299099] smart account 3PPod6TWkaqUd5Hx2CkM236PFPreqLu1nhN > SELF 0.00000000 Waves

{ "type": 13, "id": "3WKsWdtZzswcXf8JHZTUjyakcXGoVk3928Jzx8fhW8n1", "fee": 600000, "feeAssetId": null, "timestamp": 1663448924494, "version": 2, "chainId": 87, "sender": "3PPod6TWkaqUd5Hx2CkM236PFPreqLu1nhN", "senderPublicKey": "5XJeDoDVZrQ5rX8EcMWwMUHpYWs6CuAWoNgEn5rA8wgv", "proofs": [ "5ECSgX7a7G2eDGuoGJD2QrMuYKGtmGFJpnATMjjBGVkCqwSMHxwwp4fcAhpAVFSXb1C2mNj6yteyHGXK7YPTyiNf" ], "script": "base64:BgIhCAISBQoDCAEIEgQKAggBEgMKAQgSAwoBCBIECgIICBIAGgAEVVNETgEgtiYpwwT1zlORpA5LdSQvZIxRsfrfr1QpvUjSHSqyqtEACmZlZUFkZHJlc3MJAQdBZGRyZXNzAQEaAVcfqkivNjk8ZqY49VHF/62O5PcNLqNyO/oACW1pbkFtb3VudACAreIEAAxmZWVOdW1lcmF0b3IABQAOZmVlRGVub21pbmF0b3IABQEQZ2V0U3RhcnRCbG9ja0tleQEHZXZlbnRJZAkArAICBQdldmVudElkAgxfc3RhcnRfYmxvY2sBDmdldEVuZEJsb2NrS2V5AQdldmVudElkCQCsAgIFB2V2ZW50SWQCCl9lbmRfYmxvY2sBDmdldEZpbmlzaEF0S2V5AQdldmVudElkCQCsAgIFB2V2ZW50SWQCEF9maW5pc2hfYXRfYmxvY2sBF2dldEFuc3dlckRhcHBBZGRyZXNzS2V5AQdldmVudElkCQCsAgIFB2V2ZW50SWQCDF9hbnN3ZXJfZGFwcAEXZ2V0QW5zd2VyRnVuY0FkZHJlc3NLZXkBB2V2ZW50SWQJAKwCAgUHZXZlbnRJZAIMX2Fuc3dlcl9mdW5jAQxnZXRSZXN1bHRLZXkBB2V2ZW50SWQJAKwCAgUHZXZlbnRJZAIHX3Jlc3VsdAEIZ2V0SWRLZXkBB2V2ZW50SWQJAKwCAgUHZXZlbnRJZAIDX2lkAQ1nZXRBbnN3ZXJOS2V5AgdldmVudElkAW4JAKwCAgkArAICBQdldmVudElkAghfYW5zd2VyXwkApAMBBQFuARJnZXRBbnN3ZXJzQ291bnRLZXkBB2V2ZW50SWQJAKwCAgUHZXZlbnRJZAIOX2Fuc3dlcnNfY291bnQBDGdldFN0YXR1c0tleQEHZXZlbnRJZAkArAICBQdldmVudElkAgdfc3RhdHVzAQpnZXREZXNjS2V5AQdldmVudElkCQCsAgIFB2V2ZW50SWQCDF9kZXNjcmlwdGlvbgERZ2V0VG90YWxBbW91bnRLZXkBB2V2ZW50SWQJAKwCAgUHZXZlbnRJZAINX3RvdGFsX2Ftb3VudAENZ2V0QW1vdW50TktleQIHZXZlbnRJZAFuCQCsAgIJAKwCAgkArAICBQdldmVudElkAgFfCQCkAwEFAW4CB19hbW91bnQBE2dldEFtb3VudEFkZHJlc3NLZXkCB2V2ZW50SWQHYWRkcmVzcwkArAICCQCsAgIJAKwCAgUHZXZlbnRJZAIBXwUHYWRkcmVzcwIHX2Ftb3VudAETZ2V0Q2hvaWNlQWRkcmVzc0tleQIHZXZlbnRJZAdhZGRyZXNzCQCsAgIJAKwCAgkArAICBQdldmVudElkAgFfBQdhZGRyZXNzAgdfY2hvaWNlARtnZXRBbHJlYWR5Q2xhaW1lZEFkZHJlc3NLZXkCB2V2ZW50SWQHYWRkcmVzcwkArAICCQCsAgIJAKwCAgUHZXZlbnRJZAIBXwUHYWRkcmVzcwIQX2FscmVhZHlfY2xhaW1lZAEPZ2V0QW5zd2VyUmVzdWx0AQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACA0ludAQBeAUHJG1hdGNoMAUBeAQBdAUHJG1hdGNoMAkAAgECBCNlcnIBCWdldFN0YXR1cwEHZXZlbnRJZAQGc3RhdHVzCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQxnZXRTdGF0dXNLZXkBBQdldmVudElkAgEjAwMJAQIhPQIFBnN0YXR1cwIBIwkAZgIFBmhlaWdodAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEOZ2V0RmluaXNoQXRLZXkBBQdldmVudElkAAAHAghmaW5pc2hlZAUGc3RhdHVzAQdpc0FkbWluAQZjYWxsZXIDCQAAAgUGY2FsbGVyBQR0aGlzBgcBDXJlZ2lzdGVyRXZlbnQHBHR4aWQEZGVzYwpzdGFydEJsb2NrCGVuZEJsb2NrCGZpbmlzaEF0C2NoZWNrZXJEYXBwC2NoZWNrZXJGdW5jBAdldmVudElkBQR0eGlkBAxhbnN3ZXJSZXN1bHQJAQ9nZXRBbnN3ZXJSZXN1bHQBCQD8BwQFBHRoaXMCBWNoZWNrCQDMCAIFC2NoZWNrZXJEYXBwCQDMCAIFC2NoZWNrZXJGdW5jBQNuaWwFA25pbAMJAAACBQxhbnN3ZXJSZXN1bHQFDGFuc3dlclJlc3VsdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEGdldFN0YXJ0QmxvY2tLZXkBBQdldmVudElkBQpzdGFydEJsb2NrCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOZ2V0RW5kQmxvY2tLZXkBBQdldmVudElkBQhlbmRCbG9jawkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDmdldEZpbmlzaEF0S2V5AQUHZXZlbnRJZAUIZmluaXNoQXQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBF2dldEFuc3dlckRhcHBBZGRyZXNzS2V5AQUHZXZlbnRJZAULY2hlY2tlckRhcHAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBF2dldEFuc3dlckZ1bmNBZGRyZXNzS2V5AQUHZXZlbnRJZAULY2hlY2tlckZ1bmMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBCmdldERlc2NLZXkBBQdldmVudElkBQRkZXNjCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxnZXRTdGF0dXNLZXkBBQdldmVudElkAgZhY3RpdmUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBCGdldElkS2V5AQUHZXZlbnRJZAUHZXZlbnRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQENZ2V0QW5zd2VyTktleQIFB2V2ZW50SWQAAQICTk8JAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWdldEFuc3dlck5LZXkCBQdldmVudElkAAICA1lFUwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmdldEFuc3dlcnNDb3VudEtleQEFB2V2ZW50SWQAAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDGdldFJlc3VsdEtleQEFB2V2ZW50SWQAAQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARBjaGVja0V2ZW50QW5zd2VyAQdldmVudElkBQNuaWwGAWkBE3NpbXBsZVJlZ2lzdGVyRXZlbnQDBGRlc2MKc3RhcnRCbG9jawtjaGVja2VyRnVuYwMJAQEhAQkBB2lzQWRtaW4BCAUBaQZjYWxsZXIJAAIBAhFvbmx5IGFkbWluIGNhbiBkbwQEdHhpZAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBAhlbmRCbG9jawkAZAIFCnN0YXJ0QmxvY2sAoAsECGZpbmlzaEF0CQBkAgUIZW5kQmxvY2sAoAsEC2NoZWNrZXJEYXBwCQClCAEFBHRoaXMJAQ1yZWdpc3RlckV2ZW50BwUEdHhpZAUEZGVzYwUKc3RhcnRCbG9jawUIZW5kQmxvY2sFCGZpbmlzaEF0BQtjaGVja2VyRGFwcAULY2hlY2tlckZ1bmMBaQEGY2hvaWNlAgdldmVudElkBmNob2ljZQQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIEBWNoZWNrCQD8BwQFBHRoaXMCC2NoZWNrUmVzdWx0CQDMCAIFB2V2ZW50SWQFA25pbAUDbmlsAwkAAAIFBWNoZWNrBQVjaGVjawQGc3RhdHVzCQEJZ2V0U3RhdHVzAQUHZXZlbnRJZAMJAAACBQZzdGF0dXMCBmFjdGl2ZQMDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABCQAAAggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQRVU0ROBwQGYW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAMJAGYCBQltaW5BbW91bnQFBmFtb3VudAkAAgECG2Ftb3VudCBpcyBsZXNzIHRoYW4gYWxsb3dlZAQMYW5zd2Vyc0NvdW50CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQESZ2V0QW5zd2Vyc0NvdW50S2V5AQUHZXZlbnRJZAMDCQAAAgUGY2hvaWNlAAAGCQBmAgUGY2hvaWNlBQxhbnN3ZXJzQ291bnQJAAIBAhFjaG9pY2UgaXMgaW52YWxpZAQMY3VycmVudFRvdGFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJARFnZXRUb3RhbEFtb3VudEtleQEFB2V2ZW50SWQAAAQLY2hvaWNlVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBDWdldEFtb3VudE5LZXkCBQdldmVudElkBQZjaG9pY2UAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEWdldFRvdGFsQW1vdW50S2V5AQUHZXZlbnRJZAkAZAIFDGN1cnJlbnRUb3RhbAUGYW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENZ2V0QW1vdW50TktleQIFB2V2ZW50SWQFBmNob2ljZQkAZAIFC2Nob2ljZVRvdGFsBQZhbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJARNnZXRDaG9pY2VBZGRyZXNzS2V5AgUHZXZlbnRJZAUHYWRkcmVzcwUGY2hvaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQETZ2V0QW1vdW50QWRkcmVzc0tleQIFB2V2ZW50SWQFB2FkZHJlc3MFBmFtb3VudAUDbmlsCQACAQILQmFkIHBheW1lbnQJAAIBAg9Zb3UgY2FuYHQgZG8gaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEFY2xhaW0BB2V2ZW50SWQEB2FkZHJlc3MIBQFpBmNhbGxlcgQGc3RhdHVzCQEJZ2V0U3RhdHVzAQUHZXZlbnRJZAMJAAACBQZzdGF0dXMCCGZpbmlzaGVkBAt0b3RhbEFtb3VudAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkBEWdldFRvdGFsQW1vdW50S2V5AQUHZXZlbnRJZAQDZmVlCQBrAwULdG90YWxBbW91bnQFDGZlZU51bWVyYXRvcgUOZmVlRGVub21pbmF0b3IEB3Jld2FyZHMJAGUCBQt0b3RhbEFtb3VudAUDZmVlAwkAAAIFB2FkZHJlc3MFCmZlZUFkZHJlc3MJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUKZmVlQWRkcmVzcwUDZmVlBQRVU0ROBQNuaWwEDmFscmVhZHlDbGFpbWVkCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMJARtnZXRBbHJlYWR5Q2xhaW1lZEFkZHJlc3NLZXkCBQdldmVudElkCQClCAEFB2FkZHJlc3MHAwUOYWxyZWFkeUNsYWltZWQJAAIBAhZSZXdhcmQgYWxyZWFkeSBjbGFpbWVkBA1hZGRyZXNzQ2hvaWNlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQETZ2V0Q2hvaWNlQWRkcmVzc0tleQIFB2V2ZW50SWQJAKUIAQUHYWRkcmVzcwQGcmVzdWx0CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQEMZ2V0UmVzdWx0S2V5AQUHZXZlbnRJZAQLY2hvaWNlVG90YWwJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAQ1nZXRBbW91bnROS2V5AgUHZXZlbnRJZAUGcmVzdWx0BA1hZGRyZXNzQW1vdW50CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQETZ2V0QW1vdW50QWRkcmVzc0tleQIFB2V2ZW50SWQJAKUIAQUHYWRkcmVzcwMJAAACBQ1hZGRyZXNzQ2hvaWNlBQZyZXN1bHQEDWFkZHJlc3NSZXdhcmQJAGsDBQdyZXdhcmRzBQ1hZGRyZXNzQW1vdW50BQtjaG9pY2VUb3RhbAkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBE2dldENob2ljZUFkZHJlc3NLZXkCBQdldmVudElkCQClCAEFB2FkZHJlc3MGCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFB2FkZHJlc3MFDWFkZHJlc3NSZXdhcmQFBFVTRE4FA25pbAkAAgECFFNvbWV0aGluZyB3ZW50IHdyb25nCQACAQIPWW91IGNhbmB0IGRvIGl0AWkBC2NoZWNrUmVzdWx0AQdldmVudElkBAZzdGF0dXMJAQlnZXRTdGF0dXMBBQdldmVudElkAwkAAAIFBnN0YXR1cwIGYWN0aXZlBAtjaGVja2VyRGFwcAkAnQgCBQR0aGlzCQEXZ2V0QW5zd2VyRGFwcEFkZHJlc3NLZXkBBQdldmVudElkBAtjaGVja2VyRnVuYwkAnQgCBQR0aGlzCQEXZ2V0QW5zd2VyRnVuY0FkZHJlc3NLZXkBBQdldmVudElkBA1jdXJyZW50UmVzdWx0CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQEMZ2V0UmVzdWx0S2V5AQUHZXZlbnRJZAQMYW5zd2VyUmVzdWx0CQEPZ2V0QW5zd2VyUmVzdWx0AQkA/AcEBQR0aGlzAgVjaGVjawkAzAgCBQtjaGVja2VyRGFwcAkAzAgCBQtjaGVja2VyRnVuYwUDbmlsBQNuaWwDCQAAAgUMYW5zd2VyUmVzdWx0BQxhbnN3ZXJSZXN1bHQDCQECIT0CBQxhbnN3ZXJSZXN1bHQFDWN1cnJlbnRSZXN1bHQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGdldFN0YXR1c0tleQEFB2V2ZW50SWQCCGZpbmlzaGVkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEMZ2V0UmVzdWx0S2V5AQUHZXZlbnRJZAUMYW5zd2VyUmVzdWx0BQNuaWwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECEEV2ZW50IG5vdCBhY3RpdmUBaQEFY2hlY2sCBGRhcHAIZnVuY3Rpb24DCQECIT0CBQR0aGlzCAUBaQZjYWxsZXIJAAIBAhBvbmx5IG1haW4gY2FuIGRvBAxhbnN3ZXJSZXN1bHQJAQ9nZXRBbnN3ZXJSZXN1bHQBCQD8BwQJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBGRhcHAFCGZ1bmN0aW9uBQNuaWwFA25pbAkAlAoCBQNuaWwFDGFuc3dlclJlc3VsdAFpARFjaGVja1ZpcmVzVmVzdGluZwADCQECIT0CBQR0aGlzCAUBaQZjYWxsZXIJAAIBAhBvbmx5IG1haW4gY2FuIGRvBA5vcFZpcmVzQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1AyckpHZmI1TWJlaXZaTlNxZFZtc0QxWTJNejh5NkpyM1oECGVuYWJsZWQwCQELdmFsdWVPckVsc2UCCQCbCAIFDm9wVmlyZXNBZGRyZXNzAg1zeXN0ZW1fcGF1c2VkBgQIZW5hYmxlZDEJAQt2YWx1ZU9yRWxzZQIJAJsIAgUOb3BWaXJlc0FkZHJlc3MCJW9wX2xpcXVpZGFvX2FsbF93aXRoZHJhd1Zlc3RlZF9wYXVzZWQGBAhlbmFibGVkMgkBC3ZhbHVlT3JFbHNlAgkAmwgCBQ5vcFZpcmVzQWRkcmVzcwIqb3BfbGlxdWlkYW9fYWxsX3dpdGhkcmF3VmVzdGVkX3VzZG5fcGF1c2VkBgMDAwUIZW5hYmxlZDAFCGVuYWJsZWQxBwUIZW5hYmxlZDIHCQCUCgIFA25pbAACCQCUCgIFA25pbAABAJsmWsI=", "height": 3299099, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 57YbJipb6KAW2swZJvdQ2pkk7135xsrxfA6tQ29qHnKP Next: Cx5kUHt6oT1kz13JFgV6wgyds6kJcKy3AF1nHt7b9sQ5 Diff:
OldNewDifferences
4747 func getTotalAmountKey (eventId) = (eventId + "_total_amount")
4848
4949
50-func getAmountNKey (eventId,n) = ((eventId + toString(n)) + "_amount")
50+func getAmountNKey (eventId,n) = (((eventId + "_") + toString(n)) + "_amount")
5151
5252
53-func getAmountAddressKey (eventId,address) = ((eventId + address) + "_amount")
53+func getAmountAddressKey (eventId,address) = (((eventId + "_") + address) + "_amount")
5454
5555
56-func getChoiceAddressKey (eventId,address) = ((eventId + address) + "_choice")
56+func getChoiceAddressKey (eventId,address) = (((eventId + "_") + address) + "_choice")
5757
5858
59-func getAlreadyClaimedAddressKey (eventId,address) = ((eventId + address) + "_already_claimed")
59+func getAlreadyClaimedAddressKey (eventId,address) = (((eventId + "_") + address) + "_already_claimed")
6060
6161
6262 func getAnswerResult (v) = match v {
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let USDN = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
55
66 let feeAddress = Address(base58'3P4pKfj9UZHqj6pb18921oSftYuQw35gExR')
77
88 let minAmount = 10000000
99
1010 let feeNumerator = 5
1111
1212 let feeDenominator = 5
1313
1414 func getStartBlockKey (eventId) = (eventId + "_start_block")
1515
1616
1717 func getEndBlockKey (eventId) = (eventId + "_end_block")
1818
1919
2020 func getFinishAtKey (eventId) = (eventId + "_finish_at_block")
2121
2222
2323 func getAnswerDappAddressKey (eventId) = (eventId + "_answer_dapp")
2424
2525
2626 func getAnswerFuncAddressKey (eventId) = (eventId + "_answer_func")
2727
2828
2929 func getResultKey (eventId) = (eventId + "_result")
3030
3131
3232 func getIdKey (eventId) = (eventId + "_id")
3333
3434
3535 func getAnswerNKey (eventId,n) = ((eventId + "_answer_") + toString(n))
3636
3737
3838 func getAnswersCountKey (eventId) = (eventId + "_answers_count")
3939
4040
4141 func getStatusKey (eventId) = (eventId + "_status")
4242
4343
4444 func getDescKey (eventId) = (eventId + "_description")
4545
4646
4747 func getTotalAmountKey (eventId) = (eventId + "_total_amount")
4848
4949
50-func getAmountNKey (eventId,n) = ((eventId + toString(n)) + "_amount")
50+func getAmountNKey (eventId,n) = (((eventId + "_") + toString(n)) + "_amount")
5151
5252
53-func getAmountAddressKey (eventId,address) = ((eventId + address) + "_amount")
53+func getAmountAddressKey (eventId,address) = (((eventId + "_") + address) + "_amount")
5454
5555
56-func getChoiceAddressKey (eventId,address) = ((eventId + address) + "_choice")
56+func getChoiceAddressKey (eventId,address) = (((eventId + "_") + address) + "_choice")
5757
5858
59-func getAlreadyClaimedAddressKey (eventId,address) = ((eventId + address) + "_already_claimed")
59+func getAlreadyClaimedAddressKey (eventId,address) = (((eventId + "_") + address) + "_already_claimed")
6060
6161
6262 func getAnswerResult (v) = match v {
6363 case x: Int =>
6464 x
6565 case t =>
6666 throw("#err")
6767 }
6868
6969
7070 func getStatus (eventId) = {
7171 let status = valueOrElse(getString(this, getStatusKey(eventId)), "#")
7272 if (if ((status != "#"))
7373 then (height > valueOrElse(getInteger(this, getFinishAtKey(eventId)), 0))
7474 else false)
7575 then "finished"
7676 else status
7777 }
7878
7979
8080 func isAdmin (caller) = if ((caller == this))
8181 then true
8282 else false
8383
8484
8585 func registerEvent (txid,desc,startBlock,endBlock,finishAt,checkerDapp,checkerFunc) = {
8686 let eventId = txid
8787 let answerResult = getAnswerResult(invoke(this, "check", [checkerDapp, checkerFunc], nil))
8888 if ((answerResult == answerResult))
8989 then [IntegerEntry(getStartBlockKey(eventId), startBlock), IntegerEntry(getEndBlockKey(eventId), endBlock), IntegerEntry(getFinishAtKey(eventId), finishAt), StringEntry(getAnswerDappAddressKey(eventId), checkerDapp), StringEntry(getAnswerFuncAddressKey(eventId), checkerFunc), StringEntry(getDescKey(eventId), desc), StringEntry(getStatusKey(eventId), "active"), StringEntry(getIdKey(eventId), eventId), StringEntry(getAnswerNKey(eventId, 1), "NO"), StringEntry(getAnswerNKey(eventId, 2), "YES"), IntegerEntry(getAnswersCountKey(eventId), 2), IntegerEntry(getResultKey(eventId), 1)]
9090 else throw("Strict value is not equal to itself.")
9191 }
9292
9393
9494 func checkEventAnswer (eventId) = nil
9595
9696
9797 @Callable(i)
9898 func simpleRegisterEvent (desc,startBlock,checkerFunc) = if (!(isAdmin(i.caller)))
9999 then throw("only admin can do")
100100 else {
101101 let txid = toBase58String(i.transactionId)
102102 let endBlock = (startBlock + 1440)
103103 let finishAt = (endBlock + 1440)
104104 let checkerDapp = toString(this)
105105 registerEvent(txid, desc, startBlock, endBlock, finishAt, checkerDapp, checkerFunc)
106106 }
107107
108108
109109
110110 @Callable(i)
111111 func choice (eventId,choice) = {
112112 let address = toString(i.caller)
113113 let check = invoke(this, "checkResult", [eventId], nil)
114114 if ((check == check))
115115 then {
116116 let status = getStatus(eventId)
117117 if ((status == "active"))
118118 then if (if ((size(i.payments) == 1))
119119 then (i.payments[0].assetId == USDN)
120120 else false)
121121 then {
122122 let amount = i.payments[0].amount
123123 if ((minAmount > amount))
124124 then throw("amount is less than allowed")
125125 else {
126126 let answersCount = getIntegerValue(this, getAnswersCountKey(eventId))
127127 if (if ((choice == 0))
128128 then true
129129 else (choice > answersCount))
130130 then throw("choice is invalid")
131131 else {
132132 let currentTotal = valueOrElse(getInteger(this, getTotalAmountKey(eventId)), 0)
133133 let choiceTotal = valueOrElse(getInteger(this, getAmountNKey(eventId, choice)), 0)
134134 [IntegerEntry(getTotalAmountKey(eventId), (currentTotal + amount)), IntegerEntry(getAmountNKey(eventId, choice), (choiceTotal + amount)), IntegerEntry(getChoiceAddressKey(eventId, address), choice), IntegerEntry(getAmountAddressKey(eventId, address), amount)]
135135 }
136136 }
137137 }
138138 else throw("Bad payment")
139139 else throw("You can`t do it")
140140 }
141141 else throw("Strict value is not equal to itself.")
142142 }
143143
144144
145145
146146 @Callable(i)
147147 func claim (eventId) = {
148148 let address = i.caller
149149 let status = getStatus(eventId)
150150 if ((status == "finished"))
151151 then {
152152 let totalAmount = getIntegerValue(this, getTotalAmountKey(eventId))
153153 let fee = fraction(totalAmount, feeNumerator, feeDenominator)
154154 let rewards = (totalAmount - fee)
155155 if ((address == feeAddress))
156156 then [ScriptTransfer(feeAddress, fee, USDN)]
157157 else {
158158 let alreadyClaimed = valueOrElse(getBoolean(this, getAlreadyClaimedAddressKey(eventId, toString(address))), false)
159159 if (alreadyClaimed)
160160 then throw("Reward already claimed")
161161 else {
162162 let addressChoice = getIntegerValue(this, getChoiceAddressKey(eventId, toString(address)))
163163 let result = getIntegerValue(this, getResultKey(eventId))
164164 let choiceTotal = getIntegerValue(this, getAmountNKey(eventId, result))
165165 let addressAmount = getIntegerValue(this, getAmountAddressKey(eventId, toString(address)))
166166 if ((addressChoice == result))
167167 then {
168168 let addressReward = fraction(rewards, addressAmount, choiceTotal)
169169 [BooleanEntry(getChoiceAddressKey(eventId, toString(address)), true), ScriptTransfer(address, addressReward, USDN)]
170170 }
171171 else throw("Something went wrong")
172172 }
173173 }
174174 }
175175 else throw("You can`t do it")
176176 }
177177
178178
179179
180180 @Callable(i)
181181 func checkResult (eventId) = {
182182 let status = getStatus(eventId)
183183 if ((status == "active"))
184184 then {
185185 let checkerDapp = getString(this, getAnswerDappAddressKey(eventId))
186186 let checkerFunc = getString(this, getAnswerFuncAddressKey(eventId))
187187 let currentResult = getIntegerValue(this, getResultKey(eventId))
188188 let answerResult = getAnswerResult(invoke(this, "check", [checkerDapp, checkerFunc], nil))
189189 if ((answerResult == answerResult))
190190 then if ((answerResult != currentResult))
191191 then [StringEntry(getStatusKey(eventId), "finished"), IntegerEntry(getResultKey(eventId), answerResult)]
192192 else nil
193193 else throw("Strict value is not equal to itself.")
194194 }
195195 else throw("Event not active")
196196 }
197197
198198
199199
200200 @Callable(i)
201201 func check (dapp,function) = if ((this != i.caller))
202202 then throw("only main can do")
203203 else {
204204 let answerResult = getAnswerResult(invoke(addressFromStringValue(dapp), function, nil, nil))
205205 $Tuple2(nil, answerResult)
206206 }
207207
208208
209209
210210 @Callable(i)
211211 func checkViresVesting () = if ((this != i.caller))
212212 then throw("only main can do")
213213 else {
214214 let opViresAddress = addressFromStringValue("3P2rJGfb5MbeivZNSqdVmsD1Y2Mz8y6Jr3Z")
215215 let enabled0 = valueOrElse(getBoolean(opViresAddress, "system_paused"), true)
216216 let enabled1 = valueOrElse(getBoolean(opViresAddress, "op_liquidao_all_withdrawVested_paused"), true)
217217 let enabled2 = valueOrElse(getBoolean(opViresAddress, "op_liquidao_all_withdrawVested_usdn_paused"), true)
218218 if (if (if (enabled0)
219219 then enabled1
220220 else false)
221221 then enabled2
222222 else false)
223223 then $Tuple2(nil, 2)
224224 else $Tuple2(nil, 1)
225225 }
226226
227227

github/deemru/w8io/6500d08 
33.36 ms