tx · Cg9BrVmCLztgL4NF8hgdXT8695XLfenzjSQqhWXjWi3S

3N1fcrWULKWACeWDuo3FpugKcoYC4xQ7uw8:  -0.00600000 Waves

2022.07.15 12:44 [2140680] smart account 3N1fcrWULKWACeWDuo3FpugKcoYC4xQ7uw8 > SELF 0.00000000 Waves

{ "type": 13, "id": "Cg9BrVmCLztgL4NF8hgdXT8695XLfenzjSQqhWXjWi3S", "fee": 600000, "feeAssetId": null, "timestamp": 1657878288614, "version": 2, "chainId": 84, "sender": "3N1fcrWULKWACeWDuo3FpugKcoYC4xQ7uw8", "senderPublicKey": "48K83j8fKJeoBfJYe7BTpnr2VQg7uLGwyCrhmdghH3xZ", "proofs": [ "5SN8nEmAtqr2knhM6AA9ah3kkgiRZxqoU8nF2XuttUBDibrhZVPRmngg7dAud2XVcyGQNX3stV4L42eaaKvMxnSP" ], "script": "base64:BgIaCAISCQoHAQEBCAgICBIFCgMBBAESABIAEgALAAp0b2tlbl9uYW1lAhJBd2Vzb21lIHRva2VuIG5hbWUAEXRva2VuX2Rlc2NyaXB0aW9uAhlBd2Vzb21lIHRva2VuIGRlc2NyaXB0aW9uAA50b2tlbl9kZWNpbWFscwAIAAlzZXBhcmF0b3ICAl9fAAx3aXRuZXNzX3BrXzECCjEyMzEyMzEyMzEADHdpdG5lc3NfcGtfMgIKMTIzMTIzMTIzMQAMd2l0bmVzc19wa18zAgoxMjMxMjMxMjMxAA13aXRuZXNzX2NvdW50AAMABnJld2FyZAkAaAIACgkAbAYACgAABQ50b2tlbl9kZWNpbWFscwAAAAAFBERPV04BD3F1b3J1bUlzUmVhY2hlZAIIYXBwcm92ZWQFdG90YWwDCQBmAgUIYXBwcm92ZWQJAGkCBQV0b3RhbAACBgcBDWZpbmFsaXplRXZlbnQABAckbWF0Y2gwCQCiCAECBVRPS0VOAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAkAzAgCCQEHUmVpc3N1ZQMJANkEAQUBYQkAaAIFDXdpdG5lc3NfY291bnQFBnJld2FyZAYJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkApwgBCQDZBAEFDHdpdG5lc3NfcGtfMQUGcmV3YXJkCQDZBAEFAWEJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkApwgBCQDZBAEFDHdpdG5lc3NfcGtfMgUGcmV3YXJkCQDZBAEFAWEJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkApwgBCQDZBAEFDHdpdG5lc3NfcGtfMwUGcmV3YXJkCQDZBAEFAWEFA25pbAQFaXNzdWUJAMIIBQUKdG9rZW5fbmFtZQURdG9rZW5fZGVzY3JpcHRpb24JAGgCBQ13aXRuZXNzX2NvdW50BQZyZXdhcmQFDnRva2VuX2RlY2ltYWxzBgQHYXNzZXRJZAkAuAgBBQVpc3N1ZQkAzAgCCQELU3RyaW5nRW50cnkCAgVUT0tFTgkA2AQBBQdhc3NldElkCQDMCAIFBWlzc3VlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAKcIAQkA2QQBBQx3aXRuZXNzX3BrXzEFBnJld2FyZAUHYXNzZXRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQCnCAEJANkEAQUMd2l0bmVzc19wa18yBQZyZXdhcmQFB2Fzc2V0SWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkApwgBCQDZBAEFDHdpdG5lc3NfcGtfMwUGcmV3YXJkBQdhc3NldElkBQNuaWwFAWkBCWVtaXRFdmVudAcQc291cmNlX2NoYWluX2lkeBB0YXJnZXRfY2hhaW5faWR4DGJsb2NrX2hlaWdodApibG9ja19oYXNoB3R4X2hhc2gMc291cmNlX2Fzc2V0BmFtb3VudAQJYW1vdW50SW50BAckbWF0Y2gwCQCoAwEFBmFtb3VudAMJAAECBQckbWF0Y2gwAgZCaWdJbnQEAWEFByRtYXRjaDAFAWEDCQABAgUHJG1hdGNoMAIEVW5pdAkAAgECEGluY29ycmVjdCBhbW91bnQJAAIBAgtNYXRjaCBlcnJvcgQMZXZlbnRMYXN0SWR4BAckbWF0Y2gwCQCfCAECD0VWRU5UU19MQVNUX0lEWAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEDCQABAgUHJG1hdGNoMAIEVW5pdAAACQACAQILTWF0Y2ggZXJyb3IEBWV2ZW50CQC5CQIJAMwIAgkApAMBBRBzb3VyY2VfY2hhaW5faWR4CQDMCAIJAKQDAQUQdGFyZ2V0X2NoYWluX2lkeAkAzAgCCQCkAwEFDGJsb2NrX2hlaWdodAkAzAgCBQpibG9ja19oYXNoCQDMCAIFB3R4X2hhc2gJAMwIAgUMc291cmNlX2Fzc2V0CQDMCAIJAKYDAQUJYW1vdW50SW50BQNuaWwFCXNlcGFyYXRvcgkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgIIRVZFTlRTX18JAKQDAQUMZXZlbnRMYXN0SWR4BQVldmVudAkAzAgCCQEMSW50ZWdlckVudHJ5AgIPRVZFTlRTX0xBU1RfSURYCQBkAgUMZXZlbnRMYXN0SWR4AAEFA25pbAUEdW5pdAFpAQxjb25maXJtRXZlbnQDCGV2ZW50X2lkBnJlc3VsdAtzdGF0dXNfY29kZQQJY2FsbGVyX3BrCQDYBAEIBQFpD2NhbGxlclB1YmxpY0tleQQDZXJyAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUMd2l0bmVzc19wa18xCQDMCAIFDHdpdG5lc3NfcGtfMgkAzAgCBQx3aXRuZXNzX3BrXzMFA25pbAUJY2FsbGVyX3BrBQR1bml0CQACAQILbm90IHdpdG5lc3MDCQAAAgUDZXJyBQNlcnIEDXByZXZfZGVjaXNpb24EByRtYXRjaDAJAKAIAQkArAICCQCsAgIJAKwCAgIJQ09ORklSTV9fCQCkAwEFCGV2ZW50X2lkAgJfXwUJY2FsbGVyX3BrAwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAWEFByRtYXRjaDAJAAIBAhFhbHJlYWR5IGNvbmZpcm1lZAUEdW5pdAMJAAACBQ1wcmV2X2RlY2lzaW9uBQ1wcmV2X2RlY2lzaW9uBAVldmVudAQHJG1hdGNoMAkAoggBCQCsAgICCEVWRU5UU19fCQCkAwEFCGV2ZW50X2lkAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAUBYQkAAgECDW5vIHN1Y2ggZXZlbnQDCQAAAgUFZXZlbnQFBWV2ZW50BA5jb25maXJtc190b3RhbAQHJG1hdGNoMAkAnwgBCQCsAgIJAKwCAgIJQ09ORklSTV9fCQCkAwEFCGV2ZW50X2lkAgdfX1RPVEFMAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBFjb25maXJtc19hcHByb3ZlZAQHJG1hdGNoMAkAnwgBCQCsAgIJAKwCAgIJQ09ORklSTV9fCQCkAwEFCGV2ZW50X2lkAglfX0FQUFJPVkUDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwAwUGcmVzdWx0CQBkAgUBYQABBQFhAwUGcmVzdWx0AAEAAAQMY29uZmlybXNfcmVzAwUGcmVzdWx0BAckbWF0Y2gwCQCfCAEJAKwCAgkArAICAglDT05GSVJNX18JAKQDAQUIZXZlbnRfaWQCCV9fQVBQUk9WRQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgIJQ09ORklSTV9fCQCkAwEFCGV2ZW50X2lkAglfX0FQUFJPVkUJAGQCBQFhAAEJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgIJQ09ORklSTV9fCQCkAwEFCGV2ZW50X2lkAglfX0FQUFJPVkUAAQQHJG1hdGNoMAkAnwgBCQCsAgIJAKwCAgIJQ09ORklSTV9fCQCkAwEFCGV2ZW50X2lkAgZfX0RFTlkDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgICCUNPTkZJUk1fXwkApAMBBQhldmVudF9pZAIGX19ERU5ZCQBkAgUBYQABCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgICCUNPTkZJUk1fXwkApAMBBQhldmVudF9pZAIGX19ERU5ZAAEEEGZpbmFsaXphdGlvbl9yZXMDCQEPcXVvcnVtSXNSZWFjaGVkAgURY29uZmlybXNfYXBwcm92ZWQJAGQCBQ5jb25maXJtc190b3RhbAABCQENZmluYWxpemVFdmVudAAFA25pbAkAlAoCCQDOCAIJAM0IAgkAzAgCCQEMQm9vbGVhbkVudHJ5AgkArAICCQCsAgIJAKwCAgIJQ09ORklSTV9fCQCkAwEFCGV2ZW50X2lkAgJfXwUJY2FsbGVyX3BrBQZyZXN1bHQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICAglDT05GSVJNX18JAKQDAQUIZXZlbnRfaWQCB19fVE9UQUwJAGQCBQ5jb25maXJtc190b3RhbAABBQNuaWwFDGNvbmZpcm1zX3JlcwUQZmluYWxpemF0aW9uX3JlcwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARBkZXBvc2l0SW5zdXJhbmNlAAQDZXJyAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIKbm8gcGF5bWVudAMJAQIhPQIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUEdW5pdAkAAgECFHBheW1lbnQgaXMgbm90IFdBVkVTAwkAZwIAAAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQJAAIBAgx6ZXJvIHBheW1lbnQFBHVuaXQDCQAAAgUDZXJyBQNlcnIEDWZyZWVJbnN1cmFuY2UEByRtYXRjaDAJAJ8IAQkArAICAhBJTlNVUkFOQ0VfRlJFRV9fCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAhBJTlNVUkFOQ0VfRlJFRV9fCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMJAGQCBQ1mcmVlSW5zdXJhbmNlCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEXdpdGhkcmF3SW5zdXJhbmNlAAQJaW5zdXJhbmNlBAckbWF0Y2gwCQCfCAEJAKwCAgIQSU5TVVJBTkNFX0ZSRUVfXwkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAMJAGYCBQFhAAAFAWEJAAIBAhFubyBmcmVlIGluc3VyYW5jZQkAAgECDG5vIGluc3VyYW5jZQkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUJaW5zdXJhbmNlBQR1bml0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICEElOU1VSQU5DRV9GUkVFX18JANgEAQgIBQFpBmNhbGxlcgVieXRlcwAABQNuaWwFBHVuaXQBaQELY2xhaW1SZXdhcmQACQCUCgIFA25pbAUEdW5pdAECdHgBBnZlcmlmeQAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXm4COMA", "height": 2140680, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3ixB56zBRnQAPkDZWfNKGWva8vxtgTayLLCtvc6BtPPb Next: none Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4+let token_name = "Awesome token name"
5+
6+let token_description = "Awesome token description"
7+
8+let token_decimals = 8
9+
410 let separator = "__"
11+
12+let witness_pk_1 = "1231231231"
13+
14+let witness_pk_2 = "1231231231"
15+
16+let witness_pk_3 = "1231231231"
17+
18+let witness_count = 3
19+
20+let reward = (10 * pow(10, 0, token_decimals, 0, 0, DOWN))
21+
22+func quorumIsReached (approved,total) = if ((approved > (total / 2)))
23+ then true
24+ else false
25+
26+
27+func finalizeEvent () = match getString("TOKEN") {
28+ case a: String =>
29+[Reissue(fromBase58String(a), (witness_count * reward), true), ScriptTransfer(addressFromPublicKey(fromBase58String(witness_pk_1)), reward, fromBase58String(a)), ScriptTransfer(addressFromPublicKey(fromBase58String(witness_pk_2)), reward, fromBase58String(a)), ScriptTransfer(addressFromPublicKey(fromBase58String(witness_pk_3)), reward, fromBase58String(a))]
30+ case _ =>
31+ let issue = Issue(token_name, token_description, (witness_count * reward), token_decimals, true)
32+ let assetId = calculateAssetId(issue)
33+[StringEntry("TOKEN", toBase58String(assetId)), issue, ScriptTransfer(addressFromPublicKey(fromBase58String(witness_pk_1)), reward, assetId), ScriptTransfer(addressFromPublicKey(fromBase58String(witness_pk_2)), reward, assetId), ScriptTransfer(addressFromPublicKey(fromBase58String(witness_pk_3)), reward, assetId)]
34+}
35+
536
637 @Callable(i)
738 func emitEvent (source_chain_idx,target_chain_idx,block_height,block_hash,tx_hash,source_asset,amount) = {
2354 }
2455 let event = makeString([toString(source_chain_idx), toString(target_chain_idx), toString(block_height), block_hash, tx_hash, source_asset, toString(amountInt)], separator)
2556 $Tuple2([StringEntry(("EVENTS__" + toString(eventLastIdx)), event), IntegerEntry("EVENTS_LAST_IDX", (eventLastIdx + 1))], unit)
57+ }
58+
59+
60+
61+@Callable(i)
62+func confirmEvent (event_id,result,status_code) = {
63+ let caller_pk = toBase58String(i.callerPublicKey)
64+ let err = if (containsElement([witness_pk_1, witness_pk_2, witness_pk_3], caller_pk))
65+ then unit
66+ else throw("not witness")
67+ if ((err == err))
68+ then {
69+ let prev_decision = match getBoolean(((("CONFIRM__" + toString(event_id)) + "__") + caller_pk)) {
70+ case a: Boolean =>
71+ throw("already confirmed")
72+ case _ =>
73+ unit
74+ }
75+ if ((prev_decision == prev_decision))
76+ then {
77+ let event = match getString(("EVENTS__" + toString(event_id))) {
78+ case a: String =>
79+ a
80+ case _ =>
81+ throw("no such event")
82+ }
83+ if ((event == event))
84+ then {
85+ let confirms_total = match getInteger((("CONFIRM__" + toString(event_id)) + "__TOTAL")) {
86+ case a: Int =>
87+ a
88+ case _ =>
89+ 0
90+ }
91+ let confirms_approved = match getInteger((("CONFIRM__" + toString(event_id)) + "__APPROVE")) {
92+ case a: Int =>
93+ if (result)
94+ then (a + 1)
95+ else a
96+ case _ =>
97+ if (result)
98+ then 1
99+ else 0
100+ }
101+ let confirms_res = if (result)
102+ then match getInteger((("CONFIRM__" + toString(event_id)) + "__APPROVE")) {
103+ case a: Int =>
104+ IntegerEntry((("CONFIRM__" + toString(event_id)) + "__APPROVE"), (a + 1))
105+ case _ =>
106+ IntegerEntry((("CONFIRM__" + toString(event_id)) + "__APPROVE"), 1)
107+ }
108+ else match getInteger((("CONFIRM__" + toString(event_id)) + "__DENY")) {
109+ case a: Int =>
110+ IntegerEntry((("CONFIRM__" + toString(event_id)) + "__DENY"), (a + 1))
111+ case _ =>
112+ IntegerEntry((("CONFIRM__" + toString(event_id)) + "__DENY"), 1)
113+ }
114+ let finalization_res = if (quorumIsReached(confirms_approved, (confirms_total + 1)))
115+ then finalizeEvent()
116+ else nil
117+ $Tuple2((([BooleanEntry(((("CONFIRM__" + toString(event_id)) + "__") + caller_pk), result), IntegerEntry((("CONFIRM__" + toString(event_id)) + "__TOTAL"), (confirms_total + 1))] :+ confirms_res) ++ finalization_res), unit)
118+ }
119+ else throw("Strict value is not equal to itself.")
120+ }
121+ else throw("Strict value is not equal to itself.")
122+ }
123+ else throw("Strict value is not equal to itself.")
26124 }
27125
28126
65163 }
66164
67165
166+
167+@Callable(i)
168+func claimReward () = $Tuple2(nil, unit)
169+
170+
68171 @Verifier(tx)
69172 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
70173
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4+let token_name = "Awesome token name"
5+
6+let token_description = "Awesome token description"
7+
8+let token_decimals = 8
9+
410 let separator = "__"
11+
12+let witness_pk_1 = "1231231231"
13+
14+let witness_pk_2 = "1231231231"
15+
16+let witness_pk_3 = "1231231231"
17+
18+let witness_count = 3
19+
20+let reward = (10 * pow(10, 0, token_decimals, 0, 0, DOWN))
21+
22+func quorumIsReached (approved,total) = if ((approved > (total / 2)))
23+ then true
24+ else false
25+
26+
27+func finalizeEvent () = match getString("TOKEN") {
28+ case a: String =>
29+[Reissue(fromBase58String(a), (witness_count * reward), true), ScriptTransfer(addressFromPublicKey(fromBase58String(witness_pk_1)), reward, fromBase58String(a)), ScriptTransfer(addressFromPublicKey(fromBase58String(witness_pk_2)), reward, fromBase58String(a)), ScriptTransfer(addressFromPublicKey(fromBase58String(witness_pk_3)), reward, fromBase58String(a))]
30+ case _ =>
31+ let issue = Issue(token_name, token_description, (witness_count * reward), token_decimals, true)
32+ let assetId = calculateAssetId(issue)
33+[StringEntry("TOKEN", toBase58String(assetId)), issue, ScriptTransfer(addressFromPublicKey(fromBase58String(witness_pk_1)), reward, assetId), ScriptTransfer(addressFromPublicKey(fromBase58String(witness_pk_2)), reward, assetId), ScriptTransfer(addressFromPublicKey(fromBase58String(witness_pk_3)), reward, assetId)]
34+}
35+
536
637 @Callable(i)
738 func emitEvent (source_chain_idx,target_chain_idx,block_height,block_hash,tx_hash,source_asset,amount) = {
839 let amountInt = match parseBigInt(amount) {
940 case a: BigInt =>
1041 a
1142 case _: Unit =>
1243 throw("incorrect amount")
1344 case _ =>
1445 throw("Match error")
1546 }
1647 let eventLastIdx = match getInteger("EVENTS_LAST_IDX") {
1748 case a: Int =>
1849 a
1950 case _: Unit =>
2051 0
2152 case _ =>
2253 throw("Match error")
2354 }
2455 let event = makeString([toString(source_chain_idx), toString(target_chain_idx), toString(block_height), block_hash, tx_hash, source_asset, toString(amountInt)], separator)
2556 $Tuple2([StringEntry(("EVENTS__" + toString(eventLastIdx)), event), IntegerEntry("EVENTS_LAST_IDX", (eventLastIdx + 1))], unit)
57+ }
58+
59+
60+
61+@Callable(i)
62+func confirmEvent (event_id,result,status_code) = {
63+ let caller_pk = toBase58String(i.callerPublicKey)
64+ let err = if (containsElement([witness_pk_1, witness_pk_2, witness_pk_3], caller_pk))
65+ then unit
66+ else throw("not witness")
67+ if ((err == err))
68+ then {
69+ let prev_decision = match getBoolean(((("CONFIRM__" + toString(event_id)) + "__") + caller_pk)) {
70+ case a: Boolean =>
71+ throw("already confirmed")
72+ case _ =>
73+ unit
74+ }
75+ if ((prev_decision == prev_decision))
76+ then {
77+ let event = match getString(("EVENTS__" + toString(event_id))) {
78+ case a: String =>
79+ a
80+ case _ =>
81+ throw("no such event")
82+ }
83+ if ((event == event))
84+ then {
85+ let confirms_total = match getInteger((("CONFIRM__" + toString(event_id)) + "__TOTAL")) {
86+ case a: Int =>
87+ a
88+ case _ =>
89+ 0
90+ }
91+ let confirms_approved = match getInteger((("CONFIRM__" + toString(event_id)) + "__APPROVE")) {
92+ case a: Int =>
93+ if (result)
94+ then (a + 1)
95+ else a
96+ case _ =>
97+ if (result)
98+ then 1
99+ else 0
100+ }
101+ let confirms_res = if (result)
102+ then match getInteger((("CONFIRM__" + toString(event_id)) + "__APPROVE")) {
103+ case a: Int =>
104+ IntegerEntry((("CONFIRM__" + toString(event_id)) + "__APPROVE"), (a + 1))
105+ case _ =>
106+ IntegerEntry((("CONFIRM__" + toString(event_id)) + "__APPROVE"), 1)
107+ }
108+ else match getInteger((("CONFIRM__" + toString(event_id)) + "__DENY")) {
109+ case a: Int =>
110+ IntegerEntry((("CONFIRM__" + toString(event_id)) + "__DENY"), (a + 1))
111+ case _ =>
112+ IntegerEntry((("CONFIRM__" + toString(event_id)) + "__DENY"), 1)
113+ }
114+ let finalization_res = if (quorumIsReached(confirms_approved, (confirms_total + 1)))
115+ then finalizeEvent()
116+ else nil
117+ $Tuple2((([BooleanEntry(((("CONFIRM__" + toString(event_id)) + "__") + caller_pk), result), IntegerEntry((("CONFIRM__" + toString(event_id)) + "__TOTAL"), (confirms_total + 1))] :+ confirms_res) ++ finalization_res), unit)
118+ }
119+ else throw("Strict value is not equal to itself.")
120+ }
121+ else throw("Strict value is not equal to itself.")
122+ }
123+ else throw("Strict value is not equal to itself.")
26124 }
27125
28126
29127
30128 @Callable(i)
31129 func depositInsurance () = {
32130 let err = if ((size(i.payments) != 1))
33131 then throw("no payment")
34132 else if ((i.payments[0].assetId != unit))
35133 then throw("payment is not WAVES")
36134 else if ((0 >= i.payments[0].amount))
37135 then throw("zero payment")
38136 else unit
39137 if ((err == err))
40138 then {
41139 let freeInsurance = match getInteger(("INSURANCE_FREE__" + toBase58String(i.caller.bytes))) {
42140 case a: Int =>
43141 a
44142 case _ =>
45143 0
46144 }
47145 $Tuple2([IntegerEntry(("INSURANCE_FREE__" + toBase58String(i.caller.bytes)), (freeInsurance + i.payments[0].amount))], unit)
48146 }
49147 else throw("Strict value is not equal to itself.")
50148 }
51149
52150
53151
54152 @Callable(i)
55153 func withdrawInsurance () = {
56154 let insurance = match getInteger(("INSURANCE_FREE__" + toBase58String(i.caller.bytes))) {
57155 case a: Int =>
58156 if ((a > 0))
59157 then a
60158 else throw("no free insurance")
61159 case _ =>
62160 throw("no insurance")
63161 }
64162 $Tuple2([ScriptTransfer(i.caller, insurance, unit), IntegerEntry(("INSURANCE_FREE__" + toBase58String(i.caller.bytes)), 0)], unit)
65163 }
66164
67165
166+
167+@Callable(i)
168+func claimReward () = $Tuple2(nil, unit)
169+
170+
68171 @Verifier(tx)
69172 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
70173

github/deemru/w8io/873ac7e 
34.20 ms