tx · En37yv1qCQ5tF3qDDjLHwsmmBVzqeKByehiyEJdzUDj2

3MrqFfv385KAzAqqdQyprR7FMLSapeifggB:  -0.01000000 Waves

2022.11.28 13:54 [2336856] smart account 3MrqFfv385KAzAqqdQyprR7FMLSapeifggB > SELF 0.00000000 Waves

{ "type": 13, "id": "En37yv1qCQ5tF3qDDjLHwsmmBVzqeKByehiyEJdzUDj2", "fee": 1000000, "feeAssetId": null, "timestamp": 1669632855426, "version": 1, "sender": "3MrqFfv385KAzAqqdQyprR7FMLSapeifggB", "senderPublicKey": "8Tqc64F7G2nACr6yk8egBWCVAp9ZLxjTeWYdXoyQvMAN", "proofs": [ "33noLGm2vuUwNCUdjtA2rjCL4423653beBYpjye9bYyphEsnp6YxcJQ3CoZ8csiG2ZpCmLgQ75oKkXjBXZcDvZzp" ], "script": "base64:BgIlCAISAwoBCBIFCgMIAQESBAoCAQQSAwoBARIDCgEBEgMKAQgSABUAA1NFUAICX18BE2tleU1hbmFnZXJQdWJsaWNLZXkAAhQlc19fbWFuYWdlclB1YmxpY0tleQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBEGJsb2NrSGVpZ2h0RXJyb3IACQACAQIvVGhlIGJsb2NrJ3MgaGVpZ2h0IGlzIHRvbyBiaWcgZm9yIHRoaXMgcHJvcG9zYWwBEGFscmVhZHlWb3RlRXJyb3IACQACAQIWWW91IGhhdmUgYWxyZWFkeSB2b3RlZAELbm9Wb3RlRXJyb3IACQACAQIaWW91IGhhdmUgbm90IGFscmVhZHkgdm90ZWQBEmd3eENvbnRyYWN0QWRkcmVzcwAJALkJAgkAzAgCAgIlcwkAzAgCAhJnd3hDb250cmFjdEFkZHJlc3MFA25pbAUDU0VQAQ9rZXlDdXJyZW50SW5kZXgACQC5CQIJAMwIAgICJXMJAMwIAgIMY3VycmVudEluZGV4BQNuaWwFA1NFUAEWa2V5UHJvcG9zYWxEZXNjcmlwdGlvbgEGbnVtYmVyCQC5CQIJAMwIAgIEJXMlZAkAzAgCAhNwcm9wb3NhbERlc2NyaXB0aW9uCQDMCAIJAKQDAQUGbnVtYmVyBQNuaWwFA1NFUAEOa2V5UHJvcG9zYWxFbmQBBm51bWJlcgkAuQkCCQDMCAICBCVzJWQJAMwIAgILcHJvcG9zYWxFbmQJAMwIAgkApAMBBQZudW1iZXIFA25pbAUDU0VQAR5rZXlUb3RhbFBvc2l0aXZlVm90ZUJ5UHJvcG9zYWwBBm51bWJlcgkAuQkCCQDMCAICBCVzJWQJAMwIAgIfcHJvcG9zYWxUb3RhbFBvc2l0aXZlVm90ZU51bWJlcgkAzAgCCQCkAwEFBm51bWJlcgUDbmlsBQNTRVABHmtleVRvdGFsTmVnYXRpdmVWb3RlQnlQcm9wb3NhbAEGbnVtYmVyCQC5CQIJAMwIAgIEJXMlZAkAzAgCAh9wcm9wb3NhbFRvdGFsTmVnYXRpdmVWb3RlTnVtYmVyCQDMCAIJAKQDAQUGbnVtYmVyBQNuaWwFA1NFUAENa2V5VXNlckNob2ljZQIGbnVtYmVyBHVzZXIJALkJAgkAzAgCAgYlcyVkJXMJAMwIAgIVdXNlcnNDaG9pY2VieVByb3Bvc2FsCQDMCAIJAKQDAQUGbnVtYmVyCQDMCAIFBHVzZXIFA25pbAUDU0VQAR9rZXlVc2VyTnVtYmVyVm90ZXNHd3hJblByb3Bvc2FsAgZudW1iZXIEdXNlcgkAuQkCCQDMCAICBiVzJWQlcwkAzAgCAhJ1c2Vyc0dXWGJ5UHJvcG9zYWwJAMwIAgkApAMBBQZudW1iZXIJAMwIAgUEdXNlcgUDbmlsBQNTRVABEWtleVF1b3J1bVF1YW50aXR5AQZudW1iZXIJALkJAgkAzAgCAgQlcyVkCQDMCAICDnF1b3J1bVF1YW50aXR5CQDMCAIJAKQDAQUGbnVtYmVyBQNuaWwFA1NFUAEPZ2V0Q3VycmVudEluZGV4AAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkBD2tleUN1cnJlbnRJbmRleAABBWFzSW50AQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAgNJbnQEBnZhbEludAUHJG1hdGNoMAUGdmFsSW50CQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50ARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAQHJG1hdGNoMAkAoggBCQETa2V5TWFuYWdlclB1YmxpY0tleQADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAR1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdAAEByRtYXRjaDAJAKIIAQkBGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJANkEAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBCWlzTWFuYWdlcgEBaQQHJG1hdGNoMAkBFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAnBrBQckbWF0Y2gwCQAAAggFAWkPY2FsbGVyUHVibGljS2V5BQJwawMJAAECBQckbWF0Y2gwAgRVbml0CQAAAggFAWkGY2FsbGVyBQR0aGlzCQACAQILTWF0Y2ggZXJyb3IBC211c3RNYW5hZ2VyAQFpAwkBCWlzTWFuYWdlcgEFAWkGCQACAQIRcGVybWlzc2lvbiBkZW5pZWQHAWkBC2NvbnN0cnVjdG9yARJnd3hDb250cmFjdEFkZHJlc3MEBWNoZWNrCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFBWNoZWNrBQVjaGVjawkAzAgCCQELU3RyaW5nRW50cnkCCQESZ3d4Q29udHJhY3RBZGRyZXNzAAUSZ3d4Q29udHJhY3RBZGRyZXNzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEPa2V5Q3VycmVudEluZGV4AAAABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEMc3RhcnROZXdWb3RlAwtkZXNjcmlwdGlvbhBleHBpcmF0aW9uSGVpZ2h0DHF1b3J1bU51bWJlcgQGY2hlY2tzCQDMCAIJAQttdXN0TWFuYWdlcgEFAWkFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQIdGhlSW5kZXgJAQ9nZXRDdXJyZW50SW5kZXgACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEPa2V5Q3VycmVudEluZGV4AAkAZAIFCHRoZUluZGV4AAEJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFmtleVByb3Bvc2FsRGVzY3JpcHRpb24BBQh0aGVJbmRleAULZGVzY3JpcHRpb24JAMwIAgkBDEludGVnZXJFbnRyeQIJAQ5rZXlQcm9wb3NhbEVuZAEFCHRoZUluZGV4CQBkAggFCWxhc3RCbG9jawZoZWlnaHQFEGV4cGlyYXRpb25IZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJAR5rZXlUb3RhbFBvc2l0aXZlVm90ZUJ5UHJvcG9zYWwBBQh0aGVJbmRleAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEea2V5VG90YWxOZWdhdGl2ZVZvdGVCeVByb3Bvc2FsAQUIdGhlSW5kZXgAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEWtleVF1b3J1bVF1YW50aXR5AQUIdGhlSW5kZXgFDHF1b3J1bU51bWJlcgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBB3ZvdGVGb3ICDXByb3Bvc2FsSW5kZXgGY2hvaWNlBAZjaGVja3MJAMwIAgMJAGYCCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQEOa2V5UHJvcG9zYWxFbmQBBQ1wcm9wb3NhbEluZGV4CAUJbGFzdEJsb2NrBmhlaWdodAYJARBibG9ja0hlaWdodEVycm9yAAkAzAgCAwkAAAIJAJ0IAgUEdGhpcwkBH2tleVVzZXJOdW1iZXJWb3Rlc0d3eEluUHJvcG9zYWwCBQ1wcm9wb3NhbEluZGV4CQClCAEIBQFpBmNhbGxlcgUEdW5pdAYJARBhbHJlYWR5Vm90ZUVycm9yAAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBAlnd3hOdW1iZXIJAQVhc0ludAEJAPwHBAkBBXZhbHVlAQkApggBCQERQGV4dHJOYXRpdmUoMTA1OCkBCQESZ3d4Q29udHJhY3RBZGRyZXNzAAIZY2FsY1VzZXJHd3hBbW91bnRBdEhlaWdodAkAzAgCCAUBaQZjYWxsZXIJAMwIAgkBEUBleHRyTmF0aXZlKDEwNTUpAQkBDmtleVByb3Bvc2FsRW5kAQUNcHJvcG9zYWxJbmRleAUDbmlsBQNuaWwECyR0MDM0MjI0MDAzAwUGY2hvaWNlBAdhY3Rpb24xCQEMSW50ZWdlckVudHJ5AgkBDWtleVVzZXJDaG9pY2UCBQ1wcm9wb3NhbEluZGV4CQClCAEIBQFpBmNhbGxlcgABBAdhY3Rpb24yCQEMSW50ZWdlckVudHJ5AgkBHmtleVRvdGFsUG9zaXRpdmVWb3RlQnlQcm9wb3NhbAEFDXByb3Bvc2FsSW5kZXgJAGQCCQERQGV4dHJOYXRpdmUoMTA1NSkBCQEea2V5VG90YWxQb3NpdGl2ZVZvdGVCeVByb3Bvc2FsAQUNcHJvcG9zYWxJbmRleAUJZ3d4TnVtYmVyCQCUCgIFB2FjdGlvbjEFB2FjdGlvbjIEB2FjdGlvbjEJAQxJbnRlZ2VyRW50cnkCCQENa2V5VXNlckNob2ljZQIFDXByb3Bvc2FsSW5kZXgJAKUIAQgFAWkGY2FsbGVyAAAEB2FjdGlvbjIJAQxJbnRlZ2VyRW50cnkCCQEea2V5VG90YWxOZWdhdGl2ZVZvdGVCeVByb3Bvc2FsAQUNcHJvcG9zYWxJbmRleAkAZAIJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAR5rZXlUb3RhbE5lZ2F0aXZlVm90ZUJ5UHJvcG9zYWwBBQ1wcm9wb3NhbEluZGV4BQlnd3hOdW1iZXIJAJQKAgUHYWN0aW9uMQUHYWN0aW9uMgQHYWN0aW9uMQgFCyR0MDM0MjI0MDAzAl8xBAdhY3Rpb24yCAULJHQwMzQyMjQwMDMCXzIJAMwIAgkBDEludGVnZXJFbnRyeQIJAR9rZXlVc2VyTnVtYmVyVm90ZXNHd3hJblByb3Bvc2FsAgUNcHJvcG9zYWxJbmRleAkApQgBCAUBaQZjYWxsZXIFCWd3eE51bWJlcgkAzAgCBQdhY3Rpb24xCQDMCAIFB2FjdGlvbjIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQpkZWxldGVWb3RlAQ1wcm9wb3NhbEluZGV4BAZjaGVja3MJAMwIAgMJAGYCCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQEOa2V5UHJvcG9zYWxFbmQBBQ1wcm9wb3NhbEluZGV4CAUJbGFzdEJsb2NrBmhlaWdodAYJARBibG9ja0hlaWdodEVycm9yAAkAzAgCAwkBAiE9AgkAnwgBCQEfa2V5VXNlck51bWJlclZvdGVzR3d4SW5Qcm9wb3NhbAIFDXByb3Bvc2FsSW5kZXgJAKUIAQgFAWkGY2FsbGVyBQR1bml0BgkBC25vVm90ZUVycm9yAAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBAZhY3Rpb24DCQAAAgkBEUBleHRyTmF0aXZlKDEwNTUpAQkBDWtleVVzZXJDaG9pY2UCBQ1wcm9wb3NhbEluZGV4CQClCAEIBQFpBmNhbGxlcgABCQEMSW50ZWdlckVudHJ5AgkBHmtleVRvdGFsUG9zaXRpdmVWb3RlQnlQcm9wb3NhbAEFDXByb3Bvc2FsSW5kZXgJAGUCCQERQGV4dHJOYXRpdmUoMTA1NSkBCQEea2V5VG90YWxQb3NpdGl2ZVZvdGVCeVByb3Bvc2FsAQUNcHJvcG9zYWxJbmRleAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBH2tleVVzZXJOdW1iZXJWb3Rlc0d3eEluUHJvcG9zYWwCBQ1wcm9wb3NhbEluZGV4CQClCAEIBQFpBmNhbGxlcgkBDEludGVnZXJFbnRyeQIJAR5rZXlUb3RhbE5lZ2F0aXZlVm90ZUJ5UHJvcG9zYWwBBQ1wcm9wb3NhbEluZGV4CQBlAgkBEUBleHRyTmF0aXZlKDEwNTUpAQkBHmtleVRvdGFsTmVnYXRpdmVWb3RlQnlQcm9wb3NhbAEFDXByb3Bvc2FsSW5kZXgJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAR9rZXlVc2VyTnVtYmVyVm90ZXNHd3hJblByb3Bvc2FsAgUNcHJvcG9zYWxJbmRleAkApQgBCAUBaQZjYWxsZXIJAMwIAgUGYWN0aW9uCQDMCAIJAQtEZWxldGVFbnRyeQEJAR9rZXlVc2VyTnVtYmVyVm90ZXNHd3hJblByb3Bvc2FsAgUNcHJvcG9zYWxJbmRleAkApQgBCAUBaQZjYWxsZXIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDWtleVVzZXJDaG9pY2UCBQ1wcm9wb3NhbEluZGV4CQClCAEIBQFpBmNhbGxlcgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEWdldFJlc3VsdFJFQURPTkxZAQ1wcm9wb3NhbEluZGV4BA1wb3NpdGl2ZVZvdGVzCQERQGV4dHJOYXRpdmUoMTA1NSkBCQEea2V5VG90YWxQb3NpdGl2ZVZvdGVCeVByb3Bvc2FsAQUNcHJvcG9zYWxJbmRleAQNbmVnYXRpdmVWb3RlcwkBEUBleHRyTmF0aXZlKDEwNTUpAQkBHmtleVRvdGFsTmVnYXRpdmVWb3RlQnlQcm9wb3NhbAEFDXByb3Bvc2FsSW5kZXgEDHF1b3J1bU51bWJlcgkBEUBleHRyTmF0aXZlKDEwNTUpAQkBEWtleVF1b3J1bVF1YW50aXR5AQUNcHJvcG9zYWxJbmRleAkAlAoCBQNuaWwJAMwIAgUNcG9zaXRpdmVWb3RlcwkAzAgCBQ1uZWdhdGl2ZVZvdGVzCQDMCAIFDHF1b3J1bU51bWJlcgUDbmlsAWkBCnNldE1hbmFnZXIBF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BAtjaGVja0NhbGxlcgkBC211c3RNYW5hZ2VyAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIEFWNoZWNrTWFuYWdlclB1YmxpY0tleQkA2QQBBRdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQMJAAACBRVjaGVja01hbmFnZXJQdWJsaWNLZXkFFWNoZWNrTWFuYWdlclB1YmxpY0tleQkAzAgCCQELU3RyaW5nRW50cnkCCQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkABRdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDmNvbmZpcm1NYW5hZ2VyAAQCcG0JAR1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdAAEBWhhc1BNAwkBCWlzRGVmaW5lZAEFAnBtBgkAAgECEm5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQVoYXNQTQUFaGFzUE0EB2NoZWNrUE0DCQAAAggFAWkPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJwbQYJAAIBAht5b3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUHY2hlY2tQTQUHY2hlY2tQTQkAzAgCCQELU3RyaW5nRW50cnkCCQETa2V5TWFuYWdlclB1YmxpY0tleQAJANgEAQkBBXZhbHVlAQUCcG0JAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAQPdGFyZ2V0UHVibGljS2V5BAckbWF0Y2gwCQEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCcGsFByRtYXRjaDAFAnBrAwkAAQIFByRtYXRjaDACBFVuaXQIBQJ0eA9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUPdGFyZ2V0UHVibGljS2V5c7TeEQ==", "chainId": 84, "height": 2336856, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GJyRJfvep246z95N8QrM5uMoVKYfRL2TE1hfEocroDhe Next: 5AZ7KJKEmakie8GpoCoLNB3hDNFPHPsJ9ydVKp3c3n4N Diff:
OldNewDifferences
123123 else alreadyVoteError()]
124124 if ((checks == checks))
125125 then {
126- let gwxNumber = asInt(invoke(value(addressFromString(gwxContractAddress())), "calcUserGwxAmountAtHeight", [i.caller, getIntegerValue(keyProposalEnd(proposalIndex))], nil))
127- let $t034063987 = if (choice)
126+ let gwxNumber = asInt(invoke(value(addressFromString(getStringValue(gwxContractAddress()))), "calcUserGwxAmountAtHeight", [i.caller, getIntegerValue(keyProposalEnd(proposalIndex))], nil))
127+ let $t034224003 = if (choice)
128128 then {
129129 let action1 = IntegerEntry(keyUserChoice(proposalIndex, toString(i.caller)), 1)
130130 let action2 = IntegerEntry(keyTotalPositiveVoteByProposal(proposalIndex), (getIntegerValue(keyTotalPositiveVoteByProposal(proposalIndex)) + gwxNumber))
135135 let action2 = IntegerEntry(keyTotalNegativeVoteByProposal(proposalIndex), (getIntegerValue(keyTotalNegativeVoteByProposal(proposalIndex)) + gwxNumber))
136136 $Tuple2(action1, action2)
137137 }
138- let action1 = $t034063987._1
139- let action2 = $t034063987._2
138+ let action1 = $t034224003._1
139+ let action2 = $t034224003._2
140140 [IntegerEntry(keyUserNumberVotesGwxInProposal(proposalIndex, toString(i.caller)), gwxNumber), action1, action2]
141141 }
142142 else throw("Strict value is not equal to itself.")
167167 func getResultREADONLY (proposalIndex) = {
168168 let positiveVotes = getIntegerValue(keyTotalPositiveVoteByProposal(proposalIndex))
169169 let negativeVotes = getIntegerValue(keyTotalNegativeVoteByProposal(proposalIndex))
170- $Tuple2(nil, [positiveVotes, negativeVotes])
170+ let quorumNumber = getIntegerValue(keyQuorumQuantity(proposalIndex))
171+ $Tuple2(nil, [positiveVotes, negativeVotes, quorumNumber])
171172 }
172173
173174
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let SEP = "__"
55
66 func keyManagerPublicKey () = "%s__managerPublicKey"
77
88
99 func keyPendingManagerPublicKey () = "%s__pendingManagerPublicKey"
1010
1111
1212 func blockHeightError () = throw("The block's height is too big for this proposal")
1313
1414
1515 func alreadyVoteError () = throw("You have already voted")
1616
1717
1818 func noVoteError () = throw("You have not already voted")
1919
2020
2121 func gwxContractAddress () = makeString(["%s", "gwxContractAddress"], SEP)
2222
2323
2424 func keyCurrentIndex () = makeString(["%s", "currentIndex"], SEP)
2525
2626
2727 func keyProposalDescription (number) = makeString(["%s%d", "proposalDescription", toString(number)], SEP)
2828
2929
3030 func keyProposalEnd (number) = makeString(["%s%d", "proposalEnd", toString(number)], SEP)
3131
3232
3333 func keyTotalPositiveVoteByProposal (number) = makeString(["%s%d", "proposalTotalPositiveVoteNumber", toString(number)], SEP)
3434
3535
3636 func keyTotalNegativeVoteByProposal (number) = makeString(["%s%d", "proposalTotalNegativeVoteNumber", toString(number)], SEP)
3737
3838
3939 func keyUserChoice (number,user) = makeString(["%s%d%s", "usersChoicebyProposal", toString(number), user], SEP)
4040
4141
4242 func keyUserNumberVotesGwxInProposal (number,user) = makeString(["%s%d%s", "usersGWXbyProposal", toString(number), user], SEP)
4343
4444
4545 func keyQuorumQuantity (number) = makeString(["%s%d", "quorumQuantity", toString(number)], SEP)
4646
4747
4848 func getCurrentIndex () = getIntegerValue(this, keyCurrentIndex())
4949
5050
5151 func asInt (val) = match val {
5252 case valInt: Int =>
5353 valInt
5454 case _ =>
5555 throw("fail to cast into Int")
5656 }
5757
5858
5959 func managerPublicKeyOrUnit () = match getString(keyManagerPublicKey()) {
6060 case s: String =>
6161 fromBase58String(s)
6262 case _: Unit =>
6363 unit
6464 case _ =>
6565 throw("Match error")
6666 }
6767
6868
6969 func pendingManagerPublicKeyOrUnit () = match getString(keyPendingManagerPublicKey()) {
7070 case s: String =>
7171 fromBase58String(s)
7272 case _: Unit =>
7373 unit
7474 case _ =>
7575 throw("Match error")
7676 }
7777
7878
7979 func isManager (i) = match managerPublicKeyOrUnit() {
8080 case pk: ByteVector =>
8181 (i.callerPublicKey == pk)
8282 case _: Unit =>
8383 (i.caller == this)
8484 case _ =>
8585 throw("Match error")
8686 }
8787
8888
8989 func mustManager (i) = if (isManager(i))
9090 then true
9191 else throw("permission denied")
9292
9393
9494 @Callable(i)
9595 func constructor (gwxContractAddress) = {
9696 let check = mustManager(i)
9797 if ((check == check))
9898 then [StringEntry(gwxContractAddress(), gwxContractAddress), IntegerEntry(keyCurrentIndex(), 0)]
9999 else throw("Strict value is not equal to itself.")
100100 }
101101
102102
103103
104104 @Callable(i)
105105 func startNewVote (description,expirationHeight,quorumNumber) = {
106106 let checks = [mustManager(i)]
107107 if ((checks == checks))
108108 then {
109109 let theIndex = getCurrentIndex()
110110 [IntegerEntry(keyCurrentIndex(), (theIndex + 1)), StringEntry(keyProposalDescription(theIndex), description), IntegerEntry(keyProposalEnd(theIndex), (lastBlock.height + expirationHeight)), IntegerEntry(keyTotalPositiveVoteByProposal(theIndex), 0), IntegerEntry(keyTotalNegativeVoteByProposal(theIndex), 0), IntegerEntry(keyQuorumQuantity(theIndex), quorumNumber)]
111111 }
112112 else throw("Strict value is not equal to itself.")
113113 }
114114
115115
116116
117117 @Callable(i)
118118 func voteFor (proposalIndex,choice) = {
119119 let checks = [if ((getIntegerValue(this, keyProposalEnd(proposalIndex)) > lastBlock.height))
120120 then true
121121 else blockHeightError(), if ((getString(this, keyUserNumberVotesGwxInProposal(proposalIndex, toString(i.caller))) == unit))
122122 then true
123123 else alreadyVoteError()]
124124 if ((checks == checks))
125125 then {
126- let gwxNumber = asInt(invoke(value(addressFromString(gwxContractAddress())), "calcUserGwxAmountAtHeight", [i.caller, getIntegerValue(keyProposalEnd(proposalIndex))], nil))
127- let $t034063987 = if (choice)
126+ let gwxNumber = asInt(invoke(value(addressFromString(getStringValue(gwxContractAddress()))), "calcUserGwxAmountAtHeight", [i.caller, getIntegerValue(keyProposalEnd(proposalIndex))], nil))
127+ let $t034224003 = if (choice)
128128 then {
129129 let action1 = IntegerEntry(keyUserChoice(proposalIndex, toString(i.caller)), 1)
130130 let action2 = IntegerEntry(keyTotalPositiveVoteByProposal(proposalIndex), (getIntegerValue(keyTotalPositiveVoteByProposal(proposalIndex)) + gwxNumber))
131131 $Tuple2(action1, action2)
132132 }
133133 else {
134134 let action1 = IntegerEntry(keyUserChoice(proposalIndex, toString(i.caller)), 0)
135135 let action2 = IntegerEntry(keyTotalNegativeVoteByProposal(proposalIndex), (getIntegerValue(keyTotalNegativeVoteByProposal(proposalIndex)) + gwxNumber))
136136 $Tuple2(action1, action2)
137137 }
138- let action1 = $t034063987._1
139- let action2 = $t034063987._2
138+ let action1 = $t034224003._1
139+ let action2 = $t034224003._2
140140 [IntegerEntry(keyUserNumberVotesGwxInProposal(proposalIndex, toString(i.caller)), gwxNumber), action1, action2]
141141 }
142142 else throw("Strict value is not equal to itself.")
143143 }
144144
145145
146146
147147 @Callable(i)
148148 func deleteVote (proposalIndex) = {
149149 let checks = [if ((getIntegerValue(this, keyProposalEnd(proposalIndex)) > lastBlock.height))
150150 then true
151151 else blockHeightError(), if ((getInteger(keyUserNumberVotesGwxInProposal(proposalIndex, toString(i.caller))) != unit))
152152 then true
153153 else noVoteError()]
154154 if ((checks == checks))
155155 then {
156156 let action = if ((getIntegerValue(keyUserChoice(proposalIndex, toString(i.caller))) == 1))
157157 then IntegerEntry(keyTotalPositiveVoteByProposal(proposalIndex), (getIntegerValue(keyTotalPositiveVoteByProposal(proposalIndex)) - getIntegerValue(keyUserNumberVotesGwxInProposal(proposalIndex, toString(i.caller)))))
158158 else IntegerEntry(keyTotalNegativeVoteByProposal(proposalIndex), (getIntegerValue(keyTotalNegativeVoteByProposal(proposalIndex)) - getIntegerValue(keyUserNumberVotesGwxInProposal(proposalIndex, toString(i.caller)))))
159159 [action, DeleteEntry(keyUserNumberVotesGwxInProposal(proposalIndex, toString(i.caller))), DeleteEntry(keyUserChoice(proposalIndex, toString(i.caller)))]
160160 }
161161 else throw("Strict value is not equal to itself.")
162162 }
163163
164164
165165
166166 @Callable(i)
167167 func getResultREADONLY (proposalIndex) = {
168168 let positiveVotes = getIntegerValue(keyTotalPositiveVoteByProposal(proposalIndex))
169169 let negativeVotes = getIntegerValue(keyTotalNegativeVoteByProposal(proposalIndex))
170- $Tuple2(nil, [positiveVotes, negativeVotes])
170+ let quorumNumber = getIntegerValue(keyQuorumQuantity(proposalIndex))
171+ $Tuple2(nil, [positiveVotes, negativeVotes, quorumNumber])
171172 }
172173
173174
174175
175176 @Callable(i)
176177 func setManager (pendingManagerPublicKey) = {
177178 let checkCaller = mustManager(i)
178179 if ((checkCaller == checkCaller))
179180 then {
180181 let checkManagerPublicKey = fromBase58String(pendingManagerPublicKey)
181182 if ((checkManagerPublicKey == checkManagerPublicKey))
182183 then [StringEntry(keyPendingManagerPublicKey(), pendingManagerPublicKey)]
183184 else throw("Strict value is not equal to itself.")
184185 }
185186 else throw("Strict value is not equal to itself.")
186187 }
187188
188189
189190
190191 @Callable(i)
191192 func confirmManager () = {
192193 let pm = pendingManagerPublicKeyOrUnit()
193194 let hasPM = if (isDefined(pm))
194195 then true
195196 else throw("no pending manager")
196197 if ((hasPM == hasPM))
197198 then {
198199 let checkPM = if ((i.callerPublicKey == value(pm)))
199200 then true
200201 else throw("you are not pending manager")
201202 if ((checkPM == checkPM))
202203 then [StringEntry(keyManagerPublicKey(), toBase58String(value(pm))), DeleteEntry(keyPendingManagerPublicKey())]
203204 else throw("Strict value is not equal to itself.")
204205 }
205206 else throw("Strict value is not equal to itself.")
206207 }
207208
208209
209210 @Verifier(tx)
210211 func verify () = {
211212 let targetPublicKey = match managerPublicKeyOrUnit() {
212213 case pk: ByteVector =>
213214 pk
214215 case _: Unit =>
215216 tx.senderPublicKey
216217 case _ =>
217218 throw("Match error")
218219 }
219220 sigVerify(tx.bodyBytes, tx.proofs[0], targetPublicKey)
220221 }
221222

github/deemru/w8io/873ac7e 
33.20 ms