tx · Fh5fKNodeoLXetthR3tF65bzzduz2NdnPVXRyhyLeEyD
3N8WxMD723WNbLNF6xhbBw2Nmq5mwtYdAwq: -0.02000000 Waves
2020.11.27 18:03 [1283994] smart account 3N8WxMD723WNbLNF6xhbBw2Nmq5mwtYdAwq > SELF 0.00000000 Waves
{
"type": 13,
"id": "Fh5fKNodeoLXetthR3tF65bzzduz2NdnPVXRyhyLeEyD",
"fee": 2000000,
"feeAssetId": null,
"timestamp": 1606489457082,
"version": 1,
"sender": "3N8WxMD723WNbLNF6xhbBw2Nmq5mwtYdAwq",
"senderPublicKey": "9DNsZT846MHG4j3B7Kmm2SqLP9jXQSYQ24HSnvaqrBWB",
"proofs": [
"3Hq7iyWAaEtoxmns5fCC5ABf2gEQzt2CMtXmYS3bi5dbpHnxAiopxXqt4GVniLRfnswCU6sk8PYRLKJ7ZXnN4u6s",
"fzSJ9VaKwByXpxX3b7nZPfh29dvLZFkpDiqZsFPkUgc2T3rh2a31REBAzMfi4TJZLY4KGsXTQ3D1UJSfZqw6ycN",
"BuDcudrpAKS6vUGPud8gMM1WL96bqy7xHFgCazX1NUscW2ipUpkSd1xpDFHDPdid28P5WNcuipG4c35JnyQUjvx"
],
"script": "base64:AAIEAAAAAAAAABwIAhIECgIIARIAEgQKAgEIEgQKAggBEgQKAggBAAAAIgEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABAAAAA2tleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkAAAAAAAAAAAABAAAADmdldFN0cmluZ0J5S2V5AAAAAQAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5AgAAAAABAAAADGdldEJvb2xCeUtleQAAAAEAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAABHRoaXMFAAAAA2tleQcBAAAAGGdldE51bWJlckJ5QWRkcmVzc0FuZEtleQAAAAIAAAAHYWRkcmVzcwAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAAHYWRkcmVzcwUAAAADa2V5AAAAAAAAAAAAAQAAABhnZXRTdHJpbmdCeUFkZHJlc3NBbmRLZXkAAAACAAAAB2FkZHJlc3MAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAAB2FkZHJlc3MFAAAAA2tleQIAAAAAAAAAABJOZXV0cmlub0Fzc2V0SWRLZXkCAAAAEW5ldXRyaW5vX2Fzc2V0X2lkAAAAABNOZXV0cmlub0NvbnRyYWN0S2V5AgAAABFuZXV0cmlub19jb250cmFjdAAAAAAKQmFsYW5jZUtleQIAAAALcnBkX2JhbGFuY2UAAAAAEkNvbnRyb2xDb250cmFjdEtleQIAAAAQY29udHJvbF9jb250cmFjdAAAAAAOTnNidEFzc2V0SWRLZXkCAAAADWJvbmRfYXNzZXRfaWQAAAAACUFkbWluc0tleQIAAAAGYWRtaW5zAQAAABFnZXRVc2VyQmFsYW5jZUtleQAAAAIAAAAFb3duZXIAAAAHYXNzZXRJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAApCYWxhbmNlS2V5AgAAAAFfBQAAAAdhc3NldElkAgAAAAFfBQAAAAVvd25lcgEAAAAVZ2V0Q29udHJhY3RCYWxhbmNlS2V5AAAAAQAAAAdhc3NldElkCQABLAAAAAIJAAEsAAAAAgUAAAAKQmFsYW5jZUtleQIAAAABXwUAAAAHYXNzZXRJZAEAAAAUZ2V0RXhwaXJlUHJvcG9zYWxLZXkAAAABAAAABGhhc2gJAAEsAAAAAgkAASwAAAACAgAAAA9wcm9wb3NhbF9leHBpcmUCAAAAAV8FAAAABGhhc2gBAAAAE2dldE93bmVyUHJvcG9zYWxLZXkAAAABAAAABGhhc2gJAAEsAAAAAgkAASwAAAACAgAAAA5wcm9wb3NhbF9vd25lcgIAAAABXwUAAAAEaGFzaAEAAAAXZ2V0QXJndW1lbnRzUHJvcG9zYWxLZXkAAAABAAAABGhhc2gJAAEsAAAAAgkAASwAAAACAgAAABJwcm9wb3NhbF9hcmd1bWVudHMCAAAAAV8FAAAABGhhc2gBAAAACmdldFZvdGVLZXkAAAACAAAABW93bmVyAAAABGhhc2gJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAANcHJvcG9zYWxfdm90ZQIAAAABXwUAAAAFb3duZXICAAAAAV8FAAAABGhhc2gBAAAAFmNvbnZlcnRKc29uQXJyYXlUb0xpc3QAAAABAAAACWpzb25BcnJheQkABLUAAAACBQAAAAlqc29uQXJyYXkCAAAAASwAAAAAEG5ldXRyaW5vQ29udHJhY3QJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEFAAAAE05ldXRyaW5vQ29udHJhY3RLZXkAAAAAD2NvbnRyb2xDb250cmFjdAkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkBAAAAGGdldFN0cmluZ0J5QWRkcmVzc0FuZEtleQAAAAIFAAAAEG5ldXRyaW5vQ29udHJhY3QFAAAAEkNvbnRyb2xDb250cmFjdEtleQAAAAAPbmV1dHJpbm9Bc3NldElkCQACWQAAAAEJAQAAABhnZXRTdHJpbmdCeUFkZHJlc3NBbmRLZXkAAAACBQAAABBuZXV0cmlub0NvbnRyYWN0BQAAABJOZXV0cmlub0Fzc2V0SWRLZXkAAAAADm5zYnRBc3NldElkU3RyCQEAAAAYZ2V0U3RyaW5nQnlBZGRyZXNzQW5kS2V5AAAAAgUAAAAQbmV1dHJpbm9Db250cmFjdAUAAAAOTnNidEFzc2V0SWRLZXkAAAAAC25zYnRBc3NldElkCQACWQAAAAEFAAAADm5zYnRBc3NldElkU3RyAQAAABJnZXRDb250cmFjdEJhbGFuY2UAAAABAAAAB2Fzc2V0SWQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABVnZXRDb250cmFjdEJhbGFuY2VLZXkAAAABBQAAAAdhc3NldElkAQAAAA5nZXRVc2VyQmFsYW5jZQAAAAIAAAAFb3duZXIAAAAHYXNzZXRJZAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAEWdldFVzZXJCYWxhbmNlS2V5AAAAAgUAAAAFb3duZXIFAAAAB2Fzc2V0SWQBAAAAEWdldEV4cGlyZVByb3Bvc2FsAAAAAQAAAARoYXNoCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAUZ2V0RXhwaXJlUHJvcG9zYWxLZXkAAAABBQAAAARoYXNoAQAAABBnZXRPd25lclByb3Bvc2FsAAAAAQAAAARoYXNoCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAATZ2V0T3duZXJQcm9wb3NhbEtleQAAAAEFAAAABGhhc2gBAAAAFGdldEFyZ3VtZW50c1Byb3Bvc2FsAAAAAQAAAARoYXNoCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAXZ2V0QXJndW1lbnRzUHJvcG9zYWxLZXkAAAABBQAAAARoYXNoAQAAAAdnZXRWb3RlAAAAAgAAAAVvd25lcgAAAARoYXNoCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAKZ2V0Vm90ZUtleQAAAAIFAAAABW93bmVyBQAAAARoYXNoAQAAABNnZXRSZXdhcmRzQ29uZmlnS2V5AAAAAwAAAAVvd25lcgAAAAVzaGFyZQAAAAhyZWNlaXZlcgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAADnN0YWtpbmdjb25maWdfBQAAAAVvd25lcgIAAAABXwkAAaQAAAABBQAAAAVzaGFyZQIAAAABXwUAAAAIcmVjZWl2ZXIBAAAAGmdldEN1cnJlbnRSZXdhcmRzQ29uZmlnS2V5AAAAAQAAAAVvd25lcgkAASwAAAACAgAAABZzdGFraW5nY29uZmlnX2N1cnJlbnRfBQAAAAVvd25lcgEAAAAYZ2V0UmV3YXJkc0NvbmZpZ1N0YXJ0S2V5AAAAAgAAAAljb25maWdLZXkAAAAHaXNTdGFydAkAASwAAAACBQAAAAljb25maWdLZXkDBQAAAAdpc1N0YXJ0AgAAAAZfc3RhcnQCAAAABF9lbmQBAAAAG2dldFJld2FyZENvbmZpZ0luaXRpYWxTaGFyZQAAAAEAAAAFb3duZXIJAAEsAAAAAgUAAAAFb3duZXICAAAADV9pbml0aWFsU2hhcmUBAAAAFGludGVybmFsbG9ja05ldXRyaW5vAAAAAwAAAAFpAAAACHJlY2VpdmVyAAAABXNoYXJlBAAAAANwbXQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAADCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCQAEJgAAAAEFAAAACHJlY2VpdmVyCQAAAgAAAAEJAAEsAAAAAgIAAAAXSW52YWxpZCBhZGRyZXNzIGZvcm1hdCAFAAAACHJlY2VpdmVyAwMJAQAAAAIhPQAAAAIIBQAAAANwbXQAAAAHYXNzZXRJZAUAAAAPbmV1dHJpbm9Bc3NldElkCQEAAAACIT0AAAACCAUAAAADcG10AAAAB2Fzc2V0SWQFAAAAC25zYnRBc3NldElkBwkAAAIAAAABAgAAABljYW4gdXNlIFVTRE4gb3IgTlNCVCBvbmx5AwkAAGYAAAACBQAAAAVzaGFyZQAAAAAAAAAAZAkAAAIAAAABAgAAADBzdGFraW5nIHJld2FyZHMgc2hhcmUgY2Fubm90IGJlIGhpZ2hlciB0aGFuIDEwMCUDCQAAZgAAAAIAAAAAAAAAAAEFAAAABXNoYXJlCQAAAgAAAAECAAAALXN0YWtpbmcgcmV3YXJkcyBzaGFyZSBjYW5ub3QgYmUgbG93ZXIgdGhhbiAxJQQAAAAHYWNjb3VudAkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAADWFzc2V0SWRTdHJpbmcJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQgFAAAAA3BtdAAAAAdhc3NldElkBAAAAA1jdXJyZW50Q29uZmlnCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAaZ2V0Q3VycmVudFJld2FyZHNDb25maWdLZXkAAAABBQAAAAdhY2NvdW50BAAAAAtjb3JyZWN0RGF0YQMJAQAAAAIhPQAAAAIFAAAADWN1cnJlbnRDb25maWcCAAAAAAQAAAARY3VycmVudENvbmZpZ0RhdGEJAAS1AAAAAgUAAAANY3VycmVudENvbmZpZwIAAAABXwQAAAAJY3VyclNoYXJlCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAARY3VycmVudENvbmZpZ0RhdGEAAAAAAAAAAAIEAAAADGN1cnJSZWNlaXZlcgkAAZEAAAACBQAAABFjdXJyZW50Q29uZmlnRGF0YQAAAAAAAAAAAwQAAAAXbm90TWlncmF0ZWRJbml0aWFsU2hhcmUJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABtnZXRSZXdhcmRDb25maWdJbml0aWFsU2hhcmUAAAABBQAAAAdhY2NvdW50BAAAABJhY3R1YWxJbml0aWFsU2hhcmUDCQAAAAAAAAIFAAAAF25vdE1pZ3JhdGVkSW5pdGlhbFNoYXJlAAAAAAAAAAAABQAAAAljdXJyU2hhcmUFAAAAF25vdE1pZ3JhdGVkSW5pdGlhbFNoYXJlBAAAAAhuZXdTaGFyZQMDCQAAZgAAAAIFAAAAEmFjdHVhbEluaXRpYWxTaGFyZQUAAAAFc2hhcmUGCQEAAAACIT0AAAACBQAAAAxjdXJyUmVjZWl2ZXIFAAAACHJlY2VpdmVyBQAAABJhY3R1YWxJbml0aWFsU2hhcmUFAAAABXNoYXJlCQAETAAAAAIJAAGkAAAAAQUAAAASYWN0dWFsSW5pdGlhbFNoYXJlCQAETAAAAAIJAAGkAAAAAQUAAAAIbmV3U2hhcmUJAARMAAAAAgUAAAAMY3VyclJlY2VpdmVyBQAAAANuaWwJAARMAAAAAgkAAaQAAAABBQAAAAVzaGFyZQkABEwAAAACCQABpAAAAAEFAAAABXNoYXJlCQAETAAAAAIFAAAACHJlY2VpdmVyBQAAAANuaWwEAAAAE2NvcnJlY3RJbml0aWFsU2hhcmUJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAtjb3JyZWN0RGF0YQAAAAAAAAAAAAQAAAAMY29ycmVjdFNoYXJlCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAALY29ycmVjdERhdGEAAAAAAAAAAAEEAAAAD2NvcnJlY3RSZWNlaXZlcgkAAZEAAAACBQAAAAtjb3JyZWN0RGF0YQAAAAAAAAAAAgQAAAAQbmV3Q3VycmVudENvbmZpZwkBAAAAE2dldFJld2FyZHNDb25maWdLZXkAAAADBQAAAAdhY2NvdW50BQAAAAxjb3JyZWN0U2hhcmUFAAAAD2NvcnJlY3RSZWNlaXZlcgQAAAALaXNOZXdDb25maWcJAQAAAAEhAAAAAQkAAAAAAAACBQAAAA1jdXJyZW50Q29uZmlnBQAAABBuZXdDdXJyZW50Q29uZmlnBAAAAANlbmQDBQAAAAtpc05ld0NvbmZpZwUAAAAGaGVpZ2h0AAAAAAAAAAAABAAAAAVzdGFydAMFAAAAC2lzTmV3Q29uZmlnBQAAAAZoZWlnaHQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABhnZXRSZXdhcmRzQ29uZmlnU3RhcnRLZXkAAAACBQAAABBuZXdDdXJyZW50Q29uZmlnBgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAFWdldENvbnRyYWN0QmFsYW5jZUtleQAAAAEFAAAADWFzc2V0SWRTdHJpbmcJAABkAAAAAgkBAAAAEmdldENvbnRyYWN0QmFsYW5jZQAAAAEFAAAADWFzc2V0SWRTdHJpbmcIBQAAAANwbXQAAAAGYW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAARZ2V0VXNlckJhbGFuY2VLZXkAAAACBQAAAAdhY2NvdW50BQAAAA1hc3NldElkU3RyaW5nCQAAZAAAAAIJAQAAAA5nZXRVc2VyQmFsYW5jZQAAAAIFAAAAB2FjY291bnQFAAAADWFzc2V0SWRTdHJpbmcIBQAAAANwbXQAAAAGYW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAYZ2V0UmV3YXJkc0NvbmZpZ1N0YXJ0S2V5AAAAAgUAAAANY3VycmVudENvbmZpZwcFAAAAA2VuZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAGGdldFJld2FyZHNDb25maWdTdGFydEtleQAAAAIFAAAAEG5ld0N1cnJlbnRDb25maWcGBQAAAAVzdGFydAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAG2dldFJld2FyZENvbmZpZ0luaXRpYWxTaGFyZQAAAAEFAAAAB2FjY291bnQFAAAAE2NvcnJlY3RJbml0aWFsU2hhcmUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAGmdldEN1cnJlbnRSZXdhcmRzQ29uZmlnS2V5AAAAAQUAAAAHYWNjb3VudAUAAAAQbmV3Q3VycmVudENvbmZpZwUAAAADbmlsAAAABQAAAAFpAQAAAA5sb2NrTmV1dHJpbm9TUAAAAAIAAAAIcmVjZWl2ZXIAAAAFc2hhcmUJAQAAABRpbnRlcm5hbGxvY2tOZXV0cmlubwAAAAMFAAAAAWkFAAAACHJlY2VpdmVyBQAAAAVzaGFyZQAAAAFpAQAAAAxsb2NrTmV1dHJpbm8AAAAACQEAAAAUaW50ZXJuYWxsb2NrTmV1dHJpbm8AAAADBQAAAAFpCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgAAAAAAAAAAZAAAAAFpAQAAAA51bmxvY2tOZXV0cmlubwAAAAIAAAAMdW5sb2NrQW1vdW50AAAADWFzc2V0SWRTdHJpbmcEAAAAB2FjY291bnQJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAAdhc3NldElkCQACWQAAAAEFAAAADWFzc2V0SWRTdHJpbmcEAAAAB2JhbGFuY2UJAABlAAAAAgkBAAAADmdldFVzZXJCYWxhbmNlAAAAAgUAAAAHYWNjb3VudAUAAAANYXNzZXRJZFN0cmluZwUAAAAMdW5sb2NrQW1vdW50AwkAAGYAAAACAAAAAAAAAAAABQAAAAdiYWxhbmNlCQAAAgAAAAECAAAADmludmFsaWQgYW1vdW50AwkBAAAAAiE9AAAAAgUAAAAHYXNzZXRJZAUAAAAPbmV1dHJpbm9Bc3NldElkCQAAAgAAAAECAAAAEGNhbiB1c2UgbmV1dHJpbm8JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJ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",
"chainId": 84,
"height": 1283994,
"applicationStatus": "succeeded",
"spentComplexity": 0
}
View: original | compacted
Prev: HTtb5e81YPeffXk8dDBFQVa6G3okczaShFmUQNx81iz7
Next: uMmrNjeJg6ckA2anUDeeAtVt6a5ivW4EBdkFZVHz8Pn
Diff:
Old | New | | Differences |
---|
24 | 24 | | |
---|
25 | 25 | | let k = "control_contract" |
---|
26 | 26 | | |
---|
27 | | - | let l = "admins" |
---|
| 27 | + | let l = "bond_asset_id" |
---|
28 | 28 | | |
---|
29 | | - | func m (n,o) = ((((j + "_") + o) + "_") + n) |
---|
| 29 | + | let m = "admins" |
---|
| 30 | + | |
---|
| 31 | + | func n (o,p) = ((((j + "_") + p) + "_") + o) |
---|
30 | 32 | | |
---|
31 | 33 | | |
---|
32 | | - | func p (o) = ((j + "_") + o) |
---|
| 34 | + | func q (p) = ((j + "_") + p) |
---|
33 | 35 | | |
---|
34 | 36 | | |
---|
35 | | - | func q (r) = (("proposal_expire" + "_") + r) |
---|
| 37 | + | func r (s) = (("proposal_expire" + "_") + s) |
---|
36 | 38 | | |
---|
37 | 39 | | |
---|
38 | | - | func s (r) = (("proposal_owner" + "_") + r) |
---|
| 40 | + | func t (s) = (("proposal_owner" + "_") + s) |
---|
39 | 41 | | |
---|
40 | 42 | | |
---|
41 | | - | func t (r) = (("proposal_arguments" + "_") + r) |
---|
| 43 | + | func u (s) = (("proposal_arguments" + "_") + s) |
---|
42 | 44 | | |
---|
43 | 45 | | |
---|
44 | | - | func u (n,r) = (((("proposal_vote" + "_") + n) + "_") + r) |
---|
| 46 | + | func v (o,s) = (((("proposal_vote" + "_") + o) + "_") + s) |
---|
45 | 47 | | |
---|
46 | 48 | | |
---|
47 | | - | func v (w) = split(w, ",") |
---|
| 49 | + | func w (x) = split(x, ",") |
---|
48 | 50 | | |
---|
49 | 51 | | |
---|
50 | | - | let x = addressFromStringValue(c(i)) |
---|
| 52 | + | let y = addressFromStringValue(c(i)) |
---|
51 | 53 | | |
---|
52 | | - | let y = addressFromStringValue(g(x, k)) |
---|
| 54 | + | let z = addressFromStringValue(g(y, k)) |
---|
53 | 55 | | |
---|
54 | | - | let z = fromBase58String(g(x, h)) |
---|
| 56 | + | let A = fromBase58String(g(y, h)) |
---|
55 | 57 | | |
---|
56 | | - | func A (o) = a(p(o)) |
---|
| 58 | + | let B = g(y, l) |
---|
| 59 | + | |
---|
| 60 | + | let C = fromBase58String(B) |
---|
| 61 | + | |
---|
| 62 | + | func D (p) = a(q(p)) |
---|
57 | 63 | | |
---|
58 | 64 | | |
---|
59 | | - | func B (n,o) = a(m(n, o)) |
---|
| 65 | + | func E (o,p) = a(n(o, p)) |
---|
60 | 66 | | |
---|
61 | 67 | | |
---|
62 | | - | func C (r) = a(q(r)) |
---|
| 68 | + | func F (s) = a(r(s)) |
---|
63 | 69 | | |
---|
64 | 70 | | |
---|
65 | | - | func D (r) = c(s(r)) |
---|
| 71 | + | func G (s) = c(t(s)) |
---|
66 | 72 | | |
---|
67 | 73 | | |
---|
68 | | - | func E (r) = c(t(r)) |
---|
| 74 | + | func H (s) = c(u(s)) |
---|
69 | 75 | | |
---|
70 | 76 | | |
---|
71 | | - | func F (n,r) = c(u(n, r)) |
---|
| 77 | + | func I (o,s) = c(v(o, s)) |
---|
72 | 78 | | |
---|
73 | 79 | | |
---|
74 | | - | func G (n,H,I) = ((((("stakingconfig_" + n) + "_") + toString(H)) + "_") + I) |
---|
| 80 | + | func J (o,K,L) = ((((("stakingconfig_" + o) + "_") + toString(K)) + "_") + L) |
---|
75 | 81 | | |
---|
76 | 82 | | |
---|
77 | | - | func J (n) = ("stakingconfig_current_" + n) |
---|
| 83 | + | func M (o) = ("stakingconfig_current_" + o) |
---|
78 | 84 | | |
---|
79 | 85 | | |
---|
80 | | - | func K (L,M) = (L + (if (M) |
---|
| 86 | + | func N (O,P) = (O + (if (P) |
---|
81 | 87 | | then "_start" |
---|
82 | 88 | | else "_end")) |
---|
83 | 89 | | |
---|
84 | 90 | | |
---|
85 | | - | func N (n) = (n + "_initialShare") |
---|
| 91 | + | func Q (o) = (o + "_initialShare") |
---|
86 | 92 | | |
---|
87 | 93 | | |
---|
88 | | - | func O (P,I,H) = { |
---|
89 | | - | let Q = value(P.payments[0]) |
---|
90 | | - | if (!(isDefined(addressFromString(I)))) |
---|
91 | | - | then throw(("Invalid address format " + I)) |
---|
92 | | - | else if ((Q.assetId != z)) |
---|
93 | | - | then throw("can use usd only") |
---|
94 | | - | else if ((H > 100)) |
---|
| 94 | + | func R (S,L,K) = { |
---|
| 95 | + | let T = value(S.payments[0]) |
---|
| 96 | + | if (!(isDefined(addressFromString(L)))) |
---|
| 97 | + | then throw(("Invalid address format " + L)) |
---|
| 98 | + | else if (if ((T.assetId != A)) |
---|
| 99 | + | then (T.assetId != C) |
---|
| 100 | + | else false) |
---|
| 101 | + | then throw("can use USDN or NSBT only") |
---|
| 102 | + | else if ((K > 100)) |
---|
95 | 103 | | then throw("staking rewards share cannot be higher than 100%") |
---|
96 | | - | else if ((1 > H)) |
---|
| 104 | + | else if ((1 > K)) |
---|
97 | 105 | | then throw("staking rewards share cannot be lower than 1%") |
---|
98 | 106 | | else { |
---|
99 | | - | let R = toString(P.caller) |
---|
100 | | - | let S = toBase58String(value(Q.assetId)) |
---|
101 | | - | let T = c(J(R)) |
---|
102 | | - | let U = if ((T != "")) |
---|
| 107 | + | let U = toString(S.caller) |
---|
| 108 | + | let V = toBase58String(value(T.assetId)) |
---|
| 109 | + | let W = c(M(U)) |
---|
| 110 | + | let X = if ((W != "")) |
---|
103 | 111 | | then { |
---|
104 | | - | let V = split(T, "_") |
---|
105 | | - | let W = parseIntValue(V[2]) |
---|
106 | | - | let X = V[3] |
---|
107 | | - | let Y = a(N(R)) |
---|
108 | | - | let Z = if ((Y == 0)) |
---|
109 | | - | then W |
---|
110 | | - | else Y |
---|
111 | | - | let aa = if (if ((Z > H)) |
---|
| 112 | + | let Y = split(W, "_") |
---|
| 113 | + | let Z = parseIntValue(Y[2]) |
---|
| 114 | + | let aa = Y[3] |
---|
| 115 | + | let ab = a(Q(U)) |
---|
| 116 | + | let ac = if ((ab == 0)) |
---|
| 117 | + | then Z |
---|
| 118 | + | else ab |
---|
| 119 | + | let ad = if (if ((ac > K)) |
---|
112 | 120 | | then true |
---|
113 | | - | else (X != I)) |
---|
114 | | - | then Z |
---|
115 | | - | else H |
---|
116 | | - | [toString(Z), toString(aa), X] |
---|
| 121 | + | else (aa != L)) |
---|
| 122 | + | then ac |
---|
| 123 | + | else K |
---|
| 124 | + | [toString(ac), toString(ad), aa] |
---|
117 | 125 | | } |
---|
118 | | - | else [toString(H), toString(H), I] |
---|
119 | | - | let ab = parseIntValue(U[0]) |
---|
120 | | - | let ac = parseIntValue(U[1]) |
---|
121 | | - | let ad = U[2] |
---|
122 | | - | let ae = G(R, ac, ad) |
---|
123 | | - | let af = !((T == ae)) |
---|
124 | | - | let ag = if (af) |
---|
| 126 | + | else [toString(K), toString(K), L] |
---|
| 127 | + | let ae = parseIntValue(X[0]) |
---|
| 128 | + | let af = parseIntValue(X[1]) |
---|
| 129 | + | let ag = X[2] |
---|
| 130 | + | let ah = J(U, af, ag) |
---|
| 131 | + | let ai = !((W == ah)) |
---|
| 132 | + | let aj = if (ai) |
---|
125 | 133 | | then height |
---|
126 | 134 | | else 0 |
---|
127 | | - | let ah = if (af) |
---|
| 135 | + | let ak = if (ai) |
---|
128 | 136 | | then height |
---|
129 | | - | else a(K(ae, true)) |
---|
130 | | - | [IntegerEntry(p(S), (A(S) + Q.amount)), IntegerEntry(m(R, S), (B(R, S) + Q.amount)), IntegerEntry(K(T, false), ag), IntegerEntry(K(ae, true), ah), IntegerEntry(N(R), ab), StringEntry(J(R), ae)] |
---|
| 137 | + | else a(N(ah, true)) |
---|
| 138 | + | [IntegerEntry(q(V), (D(V) + T.amount)), IntegerEntry(n(U, V), (E(U, V) + T.amount)), IntegerEntry(N(W, false), aj), IntegerEntry(N(ah, true), ak), IntegerEntry(Q(U), ae), StringEntry(M(U), ah)] |
---|
131 | 139 | | } |
---|
132 | 140 | | } |
---|
133 | 141 | | |
---|
134 | 142 | | |
---|
135 | | - | @Callable(P) |
---|
136 | | - | func lockNeutrinoSP (I,H) = O(P, I, H) |
---|
| 143 | + | @Callable(S) |
---|
| 144 | + | func lockNeutrinoSP (L,K) = R(S, L, K) |
---|
137 | 145 | | |
---|
138 | 146 | | |
---|
139 | 147 | | |
---|
140 | | - | @Callable(P) |
---|
141 | | - | func lockNeutrino () = O(P, toString(P.caller), 100) |
---|
| 148 | + | @Callable(S) |
---|
| 149 | + | func lockNeutrino () = R(S, toString(S.caller), 100) |
---|
142 | 150 | | |
---|
143 | 151 | | |
---|
144 | 152 | | |
---|
145 | | - | @Callable(P) |
---|
146 | | - | func unlockNeutrino (ai,S) = { |
---|
147 | | - | let R = toString(P.caller) |
---|
148 | | - | let o = fromBase58String(S) |
---|
149 | | - | let aj = (B(R, S) - ai) |
---|
150 | | - | if ((0 > aj)) |
---|
| 153 | + | @Callable(S) |
---|
| 154 | + | func unlockNeutrino (al,V) = { |
---|
| 155 | + | let U = toString(S.caller) |
---|
| 156 | + | let p = fromBase58String(V) |
---|
| 157 | + | let am = (E(U, V) - al) |
---|
| 158 | + | if ((0 > am)) |
---|
151 | 159 | | then throw("invalid amount") |
---|
152 | | - | else if ((o != z)) |
---|
| 160 | + | else if ((p != A)) |
---|
153 | 161 | | then throw("can use neutrino") |
---|
154 | | - | else [IntegerEntry(p(S), (A(S) - ai)), IntegerEntry(m(R, S), aj), ScriptTransfer(addressFromStringValue(R), ai, z)] |
---|
| 162 | + | else [IntegerEntry(q(V), (D(V) - al)), IntegerEntry(n(U, V), am), ScriptTransfer(addressFromStringValue(U), al, A)] |
---|
155 | 163 | | } |
---|
156 | 164 | | |
---|
157 | 165 | | |
---|
158 | 166 | | |
---|
159 | | - | @Callable(P) |
---|
160 | | - | func vote (r,ak) = { |
---|
161 | | - | let al = split(E(r), ",") |
---|
162 | | - | let am = al[ak] |
---|
163 | | - | if ((height > C(r))) |
---|
| 167 | + | @Callable(S) |
---|
| 168 | + | func vote (s,an) = { |
---|
| 169 | + | let ao = split(H(s), ",") |
---|
| 170 | + | let ap = ao[an] |
---|
| 171 | + | if ((height > F(s))) |
---|
164 | 172 | | then throw("proposal is expired") |
---|
165 | | - | else [StringEntry(u(toString(P.caller), r), am)] |
---|
| 173 | + | else [StringEntry(v(toString(S.caller), s), ap)] |
---|
166 | 174 | | } |
---|
167 | 175 | | |
---|
168 | 176 | | |
---|
169 | 177 | | |
---|
170 | | - | @Callable(P) |
---|
171 | | - | func createProposal (al,an) = { |
---|
172 | | - | let r = toBase58String(keccak256(((toBytes(al) + toBytes(an)) + P.callerPublicKey))) |
---|
173 | | - | if ((D(r) != "")) |
---|
| 178 | + | @Callable(S) |
---|
| 179 | + | func createProposal (ao,aq) = { |
---|
| 180 | + | let s = toBase58String(keccak256(((toBytes(ao) + toBytes(aq)) + S.callerPublicKey))) |
---|
| 181 | + | if ((G(s) != "")) |
---|
174 | 182 | | then throw("proposal is exist") |
---|
175 | | - | else [IntegerEntry(q(r), an), StringEntry(s(r), toString(P.caller)), StringEntry(t(r), al)] |
---|
| 183 | + | else [IntegerEntry(r(s), aq), StringEntry(t(s), toString(S.caller)), StringEntry(u(s), ao)] |
---|
176 | 184 | | } |
---|
177 | 185 | | |
---|
178 | 186 | | |
---|
179 | | - | @Verifier(ao) |
---|
180 | | - | func ap () = { |
---|
181 | | - | let aq = ["GXxmZaCigPgJsT6d1cLr8nUXA65nGX8V7FuAzzrY8wQE", "3xumx4hrPpeeoo79HLGbZCgfz95L39ZFdxxwWeSUC2Pu", "D4CqtK5fBsnzRo33ZMhrM7niLseDH2uRoK6weBq2JQ3A", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"] |
---|
182 | | - | let ar = ((((if (sigVerify(ao.bodyBytes, ao.proofs[0], fromBase58String(aq[0]))) |
---|
| 187 | + | @Verifier(ar) |
---|
| 188 | + | func as () = { |
---|
| 189 | + | let at = ["GXxmZaCigPgJsT6d1cLr8nUXA65nGX8V7FuAzzrY8wQE", "3xumx4hrPpeeoo79HLGbZCgfz95L39ZFdxxwWeSUC2Pu", "D4CqtK5fBsnzRo33ZMhrM7niLseDH2uRoK6weBq2JQ3A", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"] |
---|
| 190 | + | let au = ((((if (sigVerify(ar.bodyBytes, ar.proofs[0], fromBase58String(at[0]))) |
---|
183 | 191 | | then 1 |
---|
184 | | - | else 0) + (if (sigVerify(ao.bodyBytes, ao.proofs[1], fromBase58String(aq[1]))) |
---|
| 192 | + | else 0) + (if (sigVerify(ar.bodyBytes, ar.proofs[1], fromBase58String(at[1]))) |
---|
185 | 193 | | then 1 |
---|
186 | | - | else 0)) + (if (sigVerify(ao.bodyBytes, ao.proofs[2], fromBase58String(aq[2]))) |
---|
| 194 | + | else 0)) + (if (sigVerify(ar.bodyBytes, ar.proofs[2], fromBase58String(at[2]))) |
---|
187 | 195 | | then 1 |
---|
188 | | - | else 0)) + (if (sigVerify(ao.bodyBytes, ao.proofs[3], fromBase58String(aq[3]))) |
---|
| 196 | + | else 0)) + (if (sigVerify(ar.bodyBytes, ar.proofs[3], fromBase58String(at[3]))) |
---|
189 | 197 | | then 2 |
---|
190 | 198 | | else 0)) |
---|
191 | | - | (ar >= 3) |
---|
| 199 | + | (au >= 3) |
---|
192 | 200 | | } |
---|
193 | 201 | | |
---|
Full:
Old | New | | Differences |
---|
1 | 1 | | {-# STDLIB_VERSION 4 #-} |
---|
2 | 2 | | {-# SCRIPT_TYPE ACCOUNT #-} |
---|
3 | 3 | | {-# CONTENT_TYPE DAPP #-} |
---|
4 | 4 | | func a (b) = valueOrElse(getInteger(this, b), 0) |
---|
5 | 5 | | |
---|
6 | 6 | | |
---|
7 | 7 | | func c (b) = valueOrElse(getString(this, b), "") |
---|
8 | 8 | | |
---|
9 | 9 | | |
---|
10 | 10 | | func d (b) = valueOrElse(getBoolean(this, b), false) |
---|
11 | 11 | | |
---|
12 | 12 | | |
---|
13 | 13 | | func e (f,b) = valueOrElse(getInteger(addressFromStringValue(f), b), 0) |
---|
14 | 14 | | |
---|
15 | 15 | | |
---|
16 | 16 | | func g (f,b) = valueOrElse(getString(f, b), "") |
---|
17 | 17 | | |
---|
18 | 18 | | |
---|
19 | 19 | | let h = "neutrino_asset_id" |
---|
20 | 20 | | |
---|
21 | 21 | | let i = "neutrino_contract" |
---|
22 | 22 | | |
---|
23 | 23 | | let j = "rpd_balance" |
---|
24 | 24 | | |
---|
25 | 25 | | let k = "control_contract" |
---|
26 | 26 | | |
---|
27 | | - | let l = "admins" |
---|
| 27 | + | let l = "bond_asset_id" |
---|
28 | 28 | | |
---|
29 | | - | func m (n,o) = ((((j + "_") + o) + "_") + n) |
---|
| 29 | + | let m = "admins" |
---|
| 30 | + | |
---|
| 31 | + | func n (o,p) = ((((j + "_") + p) + "_") + o) |
---|
30 | 32 | | |
---|
31 | 33 | | |
---|
32 | | - | func p (o) = ((j + "_") + o) |
---|
| 34 | + | func q (p) = ((j + "_") + p) |
---|
33 | 35 | | |
---|
34 | 36 | | |
---|
35 | | - | func q (r) = (("proposal_expire" + "_") + r) |
---|
| 37 | + | func r (s) = (("proposal_expire" + "_") + s) |
---|
36 | 38 | | |
---|
37 | 39 | | |
---|
38 | | - | func s (r) = (("proposal_owner" + "_") + r) |
---|
| 40 | + | func t (s) = (("proposal_owner" + "_") + s) |
---|
39 | 41 | | |
---|
40 | 42 | | |
---|
41 | | - | func t (r) = (("proposal_arguments" + "_") + r) |
---|
| 43 | + | func u (s) = (("proposal_arguments" + "_") + s) |
---|
42 | 44 | | |
---|
43 | 45 | | |
---|
44 | | - | func u (n,r) = (((("proposal_vote" + "_") + n) + "_") + r) |
---|
| 46 | + | func v (o,s) = (((("proposal_vote" + "_") + o) + "_") + s) |
---|
45 | 47 | | |
---|
46 | 48 | | |
---|
47 | | - | func v (w) = split(w, ",") |
---|
| 49 | + | func w (x) = split(x, ",") |
---|
48 | 50 | | |
---|
49 | 51 | | |
---|
50 | | - | let x = addressFromStringValue(c(i)) |
---|
| 52 | + | let y = addressFromStringValue(c(i)) |
---|
51 | 53 | | |
---|
52 | | - | let y = addressFromStringValue(g(x, k)) |
---|
| 54 | + | let z = addressFromStringValue(g(y, k)) |
---|
53 | 55 | | |
---|
54 | | - | let z = fromBase58String(g(x, h)) |
---|
| 56 | + | let A = fromBase58String(g(y, h)) |
---|
55 | 57 | | |
---|
56 | | - | func A (o) = a(p(o)) |
---|
| 58 | + | let B = g(y, l) |
---|
| 59 | + | |
---|
| 60 | + | let C = fromBase58String(B) |
---|
| 61 | + | |
---|
| 62 | + | func D (p) = a(q(p)) |
---|
57 | 63 | | |
---|
58 | 64 | | |
---|
59 | | - | func B (n,o) = a(m(n, o)) |
---|
| 65 | + | func E (o,p) = a(n(o, p)) |
---|
60 | 66 | | |
---|
61 | 67 | | |
---|
62 | | - | func C (r) = a(q(r)) |
---|
| 68 | + | func F (s) = a(r(s)) |
---|
63 | 69 | | |
---|
64 | 70 | | |
---|
65 | | - | func D (r) = c(s(r)) |
---|
| 71 | + | func G (s) = c(t(s)) |
---|
66 | 72 | | |
---|
67 | 73 | | |
---|
68 | | - | func E (r) = c(t(r)) |
---|
| 74 | + | func H (s) = c(u(s)) |
---|
69 | 75 | | |
---|
70 | 76 | | |
---|
71 | | - | func F (n,r) = c(u(n, r)) |
---|
| 77 | + | func I (o,s) = c(v(o, s)) |
---|
72 | 78 | | |
---|
73 | 79 | | |
---|
74 | | - | func G (n,H,I) = ((((("stakingconfig_" + n) + "_") + toString(H)) + "_") + I) |
---|
| 80 | + | func J (o,K,L) = ((((("stakingconfig_" + o) + "_") + toString(K)) + "_") + L) |
---|
75 | 81 | | |
---|
76 | 82 | | |
---|
77 | | - | func J (n) = ("stakingconfig_current_" + n) |
---|
| 83 | + | func M (o) = ("stakingconfig_current_" + o) |
---|
78 | 84 | | |
---|
79 | 85 | | |
---|
80 | | - | func K (L,M) = (L + (if (M) |
---|
| 86 | + | func N (O,P) = (O + (if (P) |
---|
81 | 87 | | then "_start" |
---|
82 | 88 | | else "_end")) |
---|
83 | 89 | | |
---|
84 | 90 | | |
---|
85 | | - | func N (n) = (n + "_initialShare") |
---|
| 91 | + | func Q (o) = (o + "_initialShare") |
---|
86 | 92 | | |
---|
87 | 93 | | |
---|
88 | | - | func O (P,I,H) = { |
---|
89 | | - | let Q = value(P.payments[0]) |
---|
90 | | - | if (!(isDefined(addressFromString(I)))) |
---|
91 | | - | then throw(("Invalid address format " + I)) |
---|
92 | | - | else if ((Q.assetId != z)) |
---|
93 | | - | then throw("can use usd only") |
---|
94 | | - | else if ((H > 100)) |
---|
| 94 | + | func R (S,L,K) = { |
---|
| 95 | + | let T = value(S.payments[0]) |
---|
| 96 | + | if (!(isDefined(addressFromString(L)))) |
---|
| 97 | + | then throw(("Invalid address format " + L)) |
---|
| 98 | + | else if (if ((T.assetId != A)) |
---|
| 99 | + | then (T.assetId != C) |
---|
| 100 | + | else false) |
---|
| 101 | + | then throw("can use USDN or NSBT only") |
---|
| 102 | + | else if ((K > 100)) |
---|
95 | 103 | | then throw("staking rewards share cannot be higher than 100%") |
---|
96 | | - | else if ((1 > H)) |
---|
| 104 | + | else if ((1 > K)) |
---|
97 | 105 | | then throw("staking rewards share cannot be lower than 1%") |
---|
98 | 106 | | else { |
---|
99 | | - | let R = toString(P.caller) |
---|
100 | | - | let S = toBase58String(value(Q.assetId)) |
---|
101 | | - | let T = c(J(R)) |
---|
102 | | - | let U = if ((T != "")) |
---|
| 107 | + | let U = toString(S.caller) |
---|
| 108 | + | let V = toBase58String(value(T.assetId)) |
---|
| 109 | + | let W = c(M(U)) |
---|
| 110 | + | let X = if ((W != "")) |
---|
103 | 111 | | then { |
---|
104 | | - | let V = split(T, "_") |
---|
105 | | - | let W = parseIntValue(V[2]) |
---|
106 | | - | let X = V[3] |
---|
107 | | - | let Y = a(N(R)) |
---|
108 | | - | let Z = if ((Y == 0)) |
---|
109 | | - | then W |
---|
110 | | - | else Y |
---|
111 | | - | let aa = if (if ((Z > H)) |
---|
| 112 | + | let Y = split(W, "_") |
---|
| 113 | + | let Z = parseIntValue(Y[2]) |
---|
| 114 | + | let aa = Y[3] |
---|
| 115 | + | let ab = a(Q(U)) |
---|
| 116 | + | let ac = if ((ab == 0)) |
---|
| 117 | + | then Z |
---|
| 118 | + | else ab |
---|
| 119 | + | let ad = if (if ((ac > K)) |
---|
112 | 120 | | then true |
---|
113 | | - | else (X != I)) |
---|
114 | | - | then Z |
---|
115 | | - | else H |
---|
116 | | - | [toString(Z), toString(aa), X] |
---|
| 121 | + | else (aa != L)) |
---|
| 122 | + | then ac |
---|
| 123 | + | else K |
---|
| 124 | + | [toString(ac), toString(ad), aa] |
---|
117 | 125 | | } |
---|
118 | | - | else [toString(H), toString(H), I] |
---|
119 | | - | let ab = parseIntValue(U[0]) |
---|
120 | | - | let ac = parseIntValue(U[1]) |
---|
121 | | - | let ad = U[2] |
---|
122 | | - | let ae = G(R, ac, ad) |
---|
123 | | - | let af = !((T == ae)) |
---|
124 | | - | let ag = if (af) |
---|
| 126 | + | else [toString(K), toString(K), L] |
---|
| 127 | + | let ae = parseIntValue(X[0]) |
---|
| 128 | + | let af = parseIntValue(X[1]) |
---|
| 129 | + | let ag = X[2] |
---|
| 130 | + | let ah = J(U, af, ag) |
---|
| 131 | + | let ai = !((W == ah)) |
---|
| 132 | + | let aj = if (ai) |
---|
125 | 133 | | then height |
---|
126 | 134 | | else 0 |
---|
127 | | - | let ah = if (af) |
---|
| 135 | + | let ak = if (ai) |
---|
128 | 136 | | then height |
---|
129 | | - | else a(K(ae, true)) |
---|
130 | | - | [IntegerEntry(p(S), (A(S) + Q.amount)), IntegerEntry(m(R, S), (B(R, S) + Q.amount)), IntegerEntry(K(T, false), ag), IntegerEntry(K(ae, true), ah), IntegerEntry(N(R), ab), StringEntry(J(R), ae)] |
---|
| 137 | + | else a(N(ah, true)) |
---|
| 138 | + | [IntegerEntry(q(V), (D(V) + T.amount)), IntegerEntry(n(U, V), (E(U, V) + T.amount)), IntegerEntry(N(W, false), aj), IntegerEntry(N(ah, true), ak), IntegerEntry(Q(U), ae), StringEntry(M(U), ah)] |
---|
131 | 139 | | } |
---|
132 | 140 | | } |
---|
133 | 141 | | |
---|
134 | 142 | | |
---|
135 | | - | @Callable(P) |
---|
136 | | - | func lockNeutrinoSP (I,H) = O(P, I, H) |
---|
| 143 | + | @Callable(S) |
---|
| 144 | + | func lockNeutrinoSP (L,K) = R(S, L, K) |
---|
137 | 145 | | |
---|
138 | 146 | | |
---|
139 | 147 | | |
---|
140 | | - | @Callable(P) |
---|
141 | | - | func lockNeutrino () = O(P, toString(P.caller), 100) |
---|
| 148 | + | @Callable(S) |
---|
| 149 | + | func lockNeutrino () = R(S, toString(S.caller), 100) |
---|
142 | 150 | | |
---|
143 | 151 | | |
---|
144 | 152 | | |
---|
145 | | - | @Callable(P) |
---|
146 | | - | func unlockNeutrino (ai,S) = { |
---|
147 | | - | let R = toString(P.caller) |
---|
148 | | - | let o = fromBase58String(S) |
---|
149 | | - | let aj = (B(R, S) - ai) |
---|
150 | | - | if ((0 > aj)) |
---|
| 153 | + | @Callable(S) |
---|
| 154 | + | func unlockNeutrino (al,V) = { |
---|
| 155 | + | let U = toString(S.caller) |
---|
| 156 | + | let p = fromBase58String(V) |
---|
| 157 | + | let am = (E(U, V) - al) |
---|
| 158 | + | if ((0 > am)) |
---|
151 | 159 | | then throw("invalid amount") |
---|
152 | | - | else if ((o != z)) |
---|
| 160 | + | else if ((p != A)) |
---|
153 | 161 | | then throw("can use neutrino") |
---|
154 | | - | else [IntegerEntry(p(S), (A(S) - ai)), IntegerEntry(m(R, S), aj), ScriptTransfer(addressFromStringValue(R), ai, z)] |
---|
| 162 | + | else [IntegerEntry(q(V), (D(V) - al)), IntegerEntry(n(U, V), am), ScriptTransfer(addressFromStringValue(U), al, A)] |
---|
155 | 163 | | } |
---|
156 | 164 | | |
---|
157 | 165 | | |
---|
158 | 166 | | |
---|
159 | | - | @Callable(P) |
---|
160 | | - | func vote (r,ak) = { |
---|
161 | | - | let al = split(E(r), ",") |
---|
162 | | - | let am = al[ak] |
---|
163 | | - | if ((height > C(r))) |
---|
| 167 | + | @Callable(S) |
---|
| 168 | + | func vote (s,an) = { |
---|
| 169 | + | let ao = split(H(s), ",") |
---|
| 170 | + | let ap = ao[an] |
---|
| 171 | + | if ((height > F(s))) |
---|
164 | 172 | | then throw("proposal is expired") |
---|
165 | | - | else [StringEntry(u(toString(P.caller), r), am)] |
---|
| 173 | + | else [StringEntry(v(toString(S.caller), s), ap)] |
---|
166 | 174 | | } |
---|
167 | 175 | | |
---|
168 | 176 | | |
---|
169 | 177 | | |
---|
170 | | - | @Callable(P) |
---|
171 | | - | func createProposal (al,an) = { |
---|
172 | | - | let r = toBase58String(keccak256(((toBytes(al) + toBytes(an)) + P.callerPublicKey))) |
---|
173 | | - | if ((D(r) != "")) |
---|
| 178 | + | @Callable(S) |
---|
| 179 | + | func createProposal (ao,aq) = { |
---|
| 180 | + | let s = toBase58String(keccak256(((toBytes(ao) + toBytes(aq)) + S.callerPublicKey))) |
---|
| 181 | + | if ((G(s) != "")) |
---|
174 | 182 | | then throw("proposal is exist") |
---|
175 | | - | else [IntegerEntry(q(r), an), StringEntry(s(r), toString(P.caller)), StringEntry(t(r), al)] |
---|
| 183 | + | else [IntegerEntry(r(s), aq), StringEntry(t(s), toString(S.caller)), StringEntry(u(s), ao)] |
---|
176 | 184 | | } |
---|
177 | 185 | | |
---|
178 | 186 | | |
---|
179 | | - | @Verifier(ao) |
---|
180 | | - | func ap () = { |
---|
181 | | - | let aq = ["GXxmZaCigPgJsT6d1cLr8nUXA65nGX8V7FuAzzrY8wQE", "3xumx4hrPpeeoo79HLGbZCgfz95L39ZFdxxwWeSUC2Pu", "D4CqtK5fBsnzRo33ZMhrM7niLseDH2uRoK6weBq2JQ3A", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"] |
---|
182 | | - | let ar = ((((if (sigVerify(ao.bodyBytes, ao.proofs[0], fromBase58String(aq[0]))) |
---|
| 187 | + | @Verifier(ar) |
---|
| 188 | + | func as () = { |
---|
| 189 | + | let at = ["GXxmZaCigPgJsT6d1cLr8nUXA65nGX8V7FuAzzrY8wQE", "3xumx4hrPpeeoo79HLGbZCgfz95L39ZFdxxwWeSUC2Pu", "D4CqtK5fBsnzRo33ZMhrM7niLseDH2uRoK6weBq2JQ3A", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"] |
---|
| 190 | + | let au = ((((if (sigVerify(ar.bodyBytes, ar.proofs[0], fromBase58String(at[0]))) |
---|
183 | 191 | | then 1 |
---|
184 | | - | else 0) + (if (sigVerify(ao.bodyBytes, ao.proofs[1], fromBase58String(aq[1]))) |
---|
| 192 | + | else 0) + (if (sigVerify(ar.bodyBytes, ar.proofs[1], fromBase58String(at[1]))) |
---|
185 | 193 | | then 1 |
---|
186 | | - | else 0)) + (if (sigVerify(ao.bodyBytes, ao.proofs[2], fromBase58String(aq[2]))) |
---|
| 194 | + | else 0)) + (if (sigVerify(ar.bodyBytes, ar.proofs[2], fromBase58String(at[2]))) |
---|
187 | 195 | | then 1 |
---|
188 | | - | else 0)) + (if (sigVerify(ao.bodyBytes, ao.proofs[3], fromBase58String(aq[3]))) |
---|
| 196 | + | else 0)) + (if (sigVerify(ar.bodyBytes, ar.proofs[3], fromBase58String(at[3]))) |
---|
189 | 197 | | then 2 |
---|
190 | 198 | | else 0)) |
---|
191 | | - | (ar >= 3) |
---|
| 199 | + | (au >= 3) |
---|
192 | 200 | | } |
---|
193 | 201 | | |
---|