tx · 6fFfNr4D1A7bVxkoPrTdKzPMpKS8iLeY7ZW6z9XzLEsn

3N3st6Cp9ZLz8kmT33EY41AVjwKqBVebvyq:  -0.01000000 Waves

2019.06.25 17:33 [557755] smart account 3N3st6Cp9ZLz8kmT33EY41AVjwKqBVebvyq > SELF 0.00000000 Waves

{ "type": 13, "id": "6fFfNr4D1A7bVxkoPrTdKzPMpKS8iLeY7ZW6z9XzLEsn", "fee": 1000000, "feeAssetId": null, "timestamp": 1561473228620, "version": 1, "sender": "3N3st6Cp9ZLz8kmT33EY41AVjwKqBVebvyq", "senderPublicKey": "59sF1tAi6uys443tyFtYoknqpQh12L9GAovriikqJ72a", "proofs": [ "QR6tZqB494vLRKPk69gPdUhFiCyCTghi1Eo5RuDosrEZUYqU4Q37SKHefaPkFfDn2YzybitYWgUNm1iJA9C7a3L" ], "script": "base64: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", "chainId": 84, "height": 557755, "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 3 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let defaultAmount = 0
5+
6+let maxAmount = 500000000
7+
8+@Callable(invoke)
9+func init (publicKey,channel) = {
10+ let publicKeyHash = toBase58String(blake2b256(publicKey))
11+ let channelId = toBase58String(blake2b256(toBytes(channel)))
12+ let currentKey = ("current_" + channelId)
13+ let currentAmountKey = ("current_amount_" + channelId)
14+ let isPublicChannel = (6 > size(channel))
15+ let pmtAmount = match invoke.payment {
16+ case pmt: AttachedPayment =>
17+ if (isDefined(pmt.assetId))
18+ then 0
19+ else pmt.amount
20+ case _ =>
21+ 0
22+ }
23+ let requiredAmount = match getInteger(this, currentAmountKey) {
24+ case currentAmount: Int =>
25+ currentAmount
26+ case _ =>
27+ 0
28+ }
29+ let newRequiredAmount = if (if (isPublicChannel)
30+ then (pmtAmount >= maxAmount)
31+ else false)
32+ then maxAmount
33+ else pmtAmount
34+ if ((requiredAmount > pmtAmount))
35+ then throw((("Init requires " + toString((requiredAmount / 100000000))) + " waves"))
36+ else match getBinary(this, (publicKeyHash + "_owner")) {
37+ case b: ByteVector =>
38+ if ((b != invoke.caller.bytes))
39+ then throw("Public key is not yours")
40+ else match getBinary(this, currentKey) {
41+ case left: ByteVector =>
42+ let leftHash = toBase58String(blake2b256(left))
43+ WriteSet([DataEntry((publicKeyHash + "_owner"), invoke.caller.bytes), DataEntry(leftHash, publicKey), DataEntry(publicKeyHash, left), DataEntry(currentKey, 0), DataEntry(currentAmountKey, defaultAmount)])
44+ case _ =>
45+ WriteSet([DataEntry((publicKeyHash + "_owner"), invoke.caller.bytes), DataEntry(currentKey, publicKey), DataEntry(currentAmountKey, newRequiredAmount)])
46+ }
47+ case _ =>
48+ match getBinary(this, currentKey) {
49+ case left: ByteVector =>
50+ let leftHash = toBase58String(blake2b256(left))
51+ WriteSet([DataEntry((publicKeyHash + "_owner"), invoke.caller.bytes), DataEntry(leftHash, publicKey), DataEntry(publicKeyHash, left), DataEntry(currentKey, 0), DataEntry(currentAmountKey, defaultAmount)])
52+ case _ =>
53+ WriteSet([DataEntry((publicKeyHash + "_owner"), invoke.caller.bytes), DataEntry(currentKey, publicKey), DataEntry(currentAmountKey, newRequiredAmount)])
54+ }
55+ }
56+ }
57+
58+
59+
60+@Callable(invoke)
61+func sendMessage (publicKey,message) = {
62+ let publicKeyHash = toBase58String(blake2b256(publicKey))
63+ match getBinary(this, (publicKeyHash + "_owner")) {
64+ case assignedCaller: ByteVector =>
65+ if ((assignedCaller != invoke.caller.bytes))
66+ then throw("Public keys not match")
67+ else match getBinary(this, publicKeyHash) {
68+ case right: ByteVector =>
69+ let conversationId = toBase58String(blake2b256((publicKey + right)))
70+ let nonceKey = (conversationId + "_n")
71+ let nonce = match getInteger(this, nonceKey) {
72+ case i: Int =>
73+ (i + 1)
74+ case _ =>
75+ 1
76+ }
77+ WriteSet([DataEntry(((conversationId + "_") + toString(nonce)), message), DataEntry(nonceKey, nonce)])
78+ case _ =>
79+ throw("Not initialized")
80+ }
81+ case _ =>
82+ throw("Owner not defined")
83+ }
84+ }
85+
86+

github/deemru/w8io/873ac7e 
13.70 ms