tx · 3hQLAxuR7jVqCgUe4yL7pcV1zZsRAaBqLhZNUUbj6JL7 3NCnfAcR2TXq7h6cVPrYpjMX2X8bwcW75Si: -0.01400000 Waves 2020.07.09 08:54 [1079303] smart account 3NCnfAcR2TXq7h6cVPrYpjMX2X8bwcW75Si > SELF 0.00000000 Waves
{ "type": 13, "id": "3hQLAxuR7jVqCgUe4yL7pcV1zZsRAaBqLhZNUUbj6JL7", "fee": 1400000, "feeAssetId": null, "timestamp": 1594274048146, "version": 1, "sender": "3NCnfAcR2TXq7h6cVPrYpjMX2X8bwcW75Si", "senderPublicKey": "3SakPRMdEaMcnEUoBZMzbah6sMCfDxsYdu4sEUfm26bH", "proofs": [ "39Z3u3EB7eh9E9pUVJbVxaga8wgPwncAQ57BEjasMK78A8Q2N4aGTT69hJXWUGH5c4rhtvmi1vQ1Khn5p38HMiFM" ], "script": "base64:AAIDAAAAAAAAABwIARIAEgMKAQgSBQoDCAgBEgQKAggBEgQKAggBAAAAGQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQIAAAAAAAAAAAROT05FAAAAAAAAAAAAAAAAAANORVcAAAAAAAAAAAEAAAAACFJFSkVDVEVEAAAAAAAAAAACAAAAAAdTVUNDRVNTAAAAAAAAAAADAAAAAARMT0NLAAAAAAAAAAAAAAAAAAZVTkxPQ0sAAAAAAAAAAAEAAAAACkFzc2V0SWRLZXkCAAAACGFzc2V0X2lkAAAAAAlBZG1pbnNLZXkCAAAABmFkbWlucwAAAAARQmZ0Q29lZmZpY2llbnRLZXkCAAAADmJmdENvZWZmaWNpZW50AQAAAA5nZXRScVN0YXR1c0tleQAAAAEAAAAJcmVxdWVzdElkCQABLAAAAAICAAAAB3N0YXR1c18FAAAACXJlcXVlc3RJZAEAAAAOZ2V0UnFIZWlnaHRLZXkAAAABAAAACXJlcXVlc3RJZAkAASwAAAACAgAAAAdoZWlnaHRfBQAAAAlyZXF1ZXN0SWQBAAAADGdldFJxVHlwZUtleQAAAAEAAAAJcmVxdWVzdElkCQABLAAAAAICAAAABXR5cGVfBQAAAAlyZXF1ZXN0SWQBAAAADWdldFJxT3duZXJLZXkAAAABAAAACXJlcXVlc3RJZAkAASwAAAACAgAAAAZvd25lcl8FAAAACXJlcXVlc3RJZAEAAAAOZ2V0UnFUYXJnZXRLZXkAAAABAAAACXJlcXVlc3RJZAkAASwAAAACAgAAAAd0YXJnZXRfBQAAAAlyZXF1ZXN0SWQBAAAADmdldFJxQW1vdW50S2V5AAAAAQAAAAlyZXF1ZXN0SWQJAAEsAAAAAgIAAAAHYW1vdW50XwUAAAAJcmVxdWVzdElkAAAAAAZhZG1pbnMJAAS1AAAAAgkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQUAAAAJQWRtaW5zS2V5AgAAAAEsAAAAAAdhc3NldElkCQACWQAAAAEJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEFAAAACkFzc2V0SWRLZXkAAAAADmJmdENvZWZmaWNpZW50CQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABBQAAABFCZnRDb2VmZmljaWVudEtleQEAAAALZ2V0UnFTdGF0dXMAAAABAAAACXJlcXVlc3RJZAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAADmdldFJxU3RhdHVzS2V5AAAAAQUAAAAJcmVxdWVzdElkAQAAAAlnZXRScVR5cGUAAAABAAAACXJlcXVlc3RJZAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAADGdldFJxVHlwZUtleQAAAAEFAAAACXJlcXVlc3RJZAEAAAAKZ2V0UnFPd25lcgAAAAEAAAAJcmVxdWVzdElkCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAANZ2V0UnFPd25lcktleQAAAAEFAAAACXJlcXVlc3RJZAEAAAALZ2V0UnFUYXJnZXQAAAABAAAACXJlcXVlc3RJZAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAADmdldFJxVGFyZ2V0S2V5AAAAAQUAAAAJcmVxdWVzdElkAQAAAAtnZXRScUFtb3VudAAAAAEAAAAJcmVxdWVzdElkCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAOZ2V0UnFBbW91bnRLZXkAAAABBQAAAAlyZXF1ZXN0SWQAAAAFAAAAAWkBAAAACnRlc3RGYXVjZXQAAAAACQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgAAAAAAO5rKAAUAAAAHYXNzZXRJZAUAAAADbmlsAAAAAWkBAAAAEWNyZWF0ZUxvY2tSZXF1ZXN0AAAAAQAAAAlyZWNpcGllbnQEAAAAA3BtdAkBAAAAB2V4dHJhY3QAAAABCAUAAAABaQAAAAdwYXltZW50BAAAAAly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", "chainId": 84, "height": 1079303, "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 3 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | func getNumberByKey (key) = match getInteger(this, key) { | |
5 | + | case a: Int => | |
6 | + | a | |
7 | + | case _ => | |
8 | + | 0 | |
9 | + | } | |
10 | + | ||
11 | + | ||
12 | + | func getStringByKey (key) = match getString(this, key) { | |
13 | + | case a: String => | |
14 | + | a | |
15 | + | case _ => | |
16 | + | "" | |
17 | + | } | |
18 | + | ||
19 | + | ||
20 | + | let NONE = 0 | |
21 | + | ||
22 | + | let NEW = 1 | |
23 | + | ||
24 | + | let REJECTED = 2 | |
25 | + | ||
26 | + | let SUCCESS = 3 | |
27 | + | ||
28 | + | let LOCK = 0 | |
29 | + | ||
30 | + | let UNLOCK = 1 | |
31 | + | ||
32 | + | let AssetIdKey = "asset_id" | |
33 | + | ||
34 | + | let AdminsKey = "admins" | |
35 | + | ||
36 | + | let BftCoefficientKey = "bftCoefficient" | |
37 | + | ||
38 | + | func getRqStatusKey (requestId) = ("status_" + requestId) | |
39 | + | ||
40 | + | ||
41 | + | func getRqHeightKey (requestId) = ("height_" + requestId) | |
42 | + | ||
43 | + | ||
44 | + | func getRqTypeKey (requestId) = ("type_" + requestId) | |
45 | + | ||
46 | + | ||
47 | + | func getRqOwnerKey (requestId) = ("owner_" + requestId) | |
48 | + | ||
49 | + | ||
50 | + | func getRqTargetKey (requestId) = ("target_" + requestId) | |
51 | + | ||
52 | + | ||
53 | + | func getRqAmountKey (requestId) = ("amount_" + requestId) | |
54 | + | ||
55 | + | ||
56 | + | let admins = split(getStringByKey(AdminsKey), ",") | |
57 | + | ||
58 | + | let assetId = fromBase58String(getStringByKey(AssetIdKey)) | |
59 | + | ||
60 | + | let bftCoefficient = getNumberByKey(BftCoefficientKey) | |
61 | + | ||
62 | + | func getRqStatus (requestId) = getNumberByKey(getRqStatusKey(requestId)) | |
63 | + | ||
64 | + | ||
65 | + | func getRqType (requestId) = getNumberByKey(getRqTypeKey(requestId)) | |
66 | + | ||
67 | + | ||
68 | + | func getRqOwner (requestId) = getStringByKey(getRqOwnerKey(requestId)) | |
69 | + | ||
70 | + | ||
71 | + | func getRqTarget (requestId) = getStringByKey(getRqTargetKey(requestId)) | |
72 | + | ||
73 | + | ||
74 | + | func getRqAmount (requestId) = getNumberByKey(getRqAmountKey(requestId)) | |
75 | + | ||
76 | + | ||
77 | + | @Callable(i) | |
78 | + | func testFaucet () = TransferSet([ScriptTransfer(i.caller, 1000000000, assetId)]) | |
79 | + | ||
80 | + | ||
81 | + | ||
82 | + | @Callable(i) | |
83 | + | func createLockRequest (recipient) = { | |
84 | + | let pmt = extract(i.payment) | |
85 | + | let requestId = toBase58String(keccak256((((fromBase58String(toString(this)) + i.caller.bytes) + i.transactionId) + toBytes(recipient)))) | |
86 | + | if ((pmt.assetId != assetId)) | |
87 | + | then throw("can use waves only") | |
88 | + | else if ((getRqOwner(requestId) != "")) | |
89 | + | then throw("request exists") | |
90 | + | else WriteSet([DataEntry(getRqStatusKey(requestId), NEW), DataEntry(getRqTypeKey(requestId), LOCK), DataEntry(getRqOwnerKey(requestId), toString(i.caller)), DataEntry(getRqHeightKey(requestId), height), DataEntry(getRqTargetKey(requestId), recipient), DataEntry(getRqAmountKey(requestId), pmt.amount)]) | |
91 | + | } | |
92 | + | ||
93 | + | ||
94 | + | ||
95 | + | @Callable(i) | |
96 | + | func changeStatus (requestHash,signsString,status) = { | |
97 | + | let signs = split(signsString, ",") | |
98 | + | let msg = ((requestHash + "_") + toString(status)) | |
99 | + | let count = (((((if (sigVerify(toBytes(msg), fromBase58String(signs[0]), fromBase58String(admins[0]))) | |
100 | + | then 1 | |
101 | + | else 0) + (if (sigVerify(toBytes(msg), fromBase58String(signs[1]), fromBase58String(admins[1]))) | |
102 | + | then 1 | |
103 | + | else 0)) + (if (sigVerify(toBytes(msg), fromBase58String(signs[2]), fromBase58String(admins[2]))) | |
104 | + | then 1 | |
105 | + | else 0)) + (if (sigVerify(toBytes(msg), fromBase58String(signs[3]), fromBase58String(admins[3]))) | |
106 | + | then 1 | |
107 | + | else 0)) + (if (sigVerify(toBytes(msg), fromBase58String(signs[4]), fromBase58String(admins[4]))) | |
108 | + | then 1 | |
109 | + | else 0)) | |
110 | + | if ((bftCoefficient > count)) | |
111 | + | then throw("count is less 3") | |
112 | + | else if ((getRqOwner(requestHash) == "")) | |
113 | + | then throw("request is not exists") | |
114 | + | else if ((getRqStatus(requestHash) != NEW)) | |
115 | + | then throw("request is not exists") | |
116 | + | else if (if ((status != SUCCESS)) | |
117 | + | then (status != REJECTED) | |
118 | + | else false) | |
119 | + | then throw("invalid status") | |
120 | + | else { | |
121 | + | let owner = addressFromStringValue(getRqOwner(requestHash)) | |
122 | + | let type = getRqType(requestHash) | |
123 | + | let amount = getRqAmount(requestHash) | |
124 | + | ScriptResult(WriteSet([DataEntry(getRqStatusKey(requestHash), status)]), TransferSet([ScriptTransfer(owner, if (if (if ((status == REJECTED)) | |
125 | + | then (type == LOCK) | |
126 | + | else false) | |
127 | + | then true | |
128 | + | else if ((status == SUCCESS)) | |
129 | + | then (type == UNLOCK) | |
130 | + | else false) | |
131 | + | then amount | |
132 | + | else 0, assetId)])) | |
133 | + | } | |
134 | + | } | |
135 | + | ||
136 | + | ||
137 | + | ||
138 | + | @Callable(i) | |
139 | + | func changeStatusTest (requestHash,status) = if ((getRqOwner(requestHash) == "")) | |
140 | + | then throw("request is not exists") | |
141 | + | else if ((getRqStatus(requestHash) != NEW)) | |
142 | + | then throw("request is not exists") | |
143 | + | else if (if ((status != SUCCESS)) | |
144 | + | then (status != REJECTED) | |
145 | + | else false) | |
146 | + | then throw("invalid status") | |
147 | + | else { | |
148 | + | let owner = addressFromStringValue(getRqOwner(requestHash)) | |
149 | + | let type = getRqType(requestHash) | |
150 | + | let amount = getRqAmount(requestHash) | |
151 | + | ScriptResult(WriteSet([DataEntry(getRqStatusKey(requestHash), status)]), TransferSet([ScriptTransfer(owner, if (if (if ((status == REJECTED)) | |
152 | + | then (type == LOCK) | |
153 | + | else false) | |
154 | + | then true | |
155 | + | else if ((status == SUCCESS)) | |
156 | + | then (type == UNLOCK) | |
157 | + | else false) | |
158 | + | then amount | |
159 | + | else 0, assetId)])) | |
160 | + | } | |
161 | + | ||
162 | + | ||
163 | + | ||
164 | + | @Callable(i) | |
165 | + | func createUnlockRequest (sender,amount) = { | |
166 | + | let requestId = toBase58String(keccak256(((((fromBase58String(toString(this)) + i.caller.bytes) + i.transactionId) + toBytes(sender)) + toBytes(amount)))) | |
167 | + | if ((getRqOwner(requestId) != "")) | |
168 | + | then throw("request exists") | |
169 | + | else WriteSet([DataEntry(getRqStatusKey(requestId), NEW), DataEntry(getRqTypeKey(requestId), UNLOCK), DataEntry(getRqOwnerKey(requestId), toString(i.caller)), DataEntry(getRqHeightKey(requestId), height), DataEntry(getRqTargetKey(requestId), sender), DataEntry(getRqAmountKey(requestId), amount)]) | |
170 | + | } | |
171 | + | ||
172 | + |
github/deemru/w8io/169f3d6 20.89 ms ◑![]()