tx · DfEVQ9mvwb1ZWjZNd4U7z34fonFE5QNN5Qki1QhX5uNy

3MsX9C2MzzxE4ySF5aYcJoaiPfkyxZMg4cW:  -0.01400000 Waves

2021.02.28 06:53 [1416625] smart account 3MsX9C2MzzxE4ySF5aYcJoaiPfkyxZMg4cW > SELF 0.00000000 Waves

{ "type": 13, "id": "DfEVQ9mvwb1ZWjZNd4U7z34fonFE5QNN5Qki1QhX5uNy", "fee": 1400000, "feeAssetId": null, "timestamp": 1614484252237, "version": 2, "chainId": 84, "sender": "3MsX9C2MzzxE4ySF5aYcJoaiPfkyxZMg4cW", "senderPublicKey": "AXbaBkJNocyrVpwqTzD4TpUY8fQ6eeRto9k1m2bNCzXV", "proofs": [ "4gPFrbpJ5KC8Kh7j91hiC5mqts6pUCiX9ZEPpmni747kMjbnKe7jCspEV6CVDTGgXje1NN71WyhQvoaixmjj8Z3Y" ], "script": "base64:AAIDAAAAAAAAAAcIARIDCgEIAAAABAAAAAAMYW5zd2Vyc0NvdW50AAAAAAAAAAAUAAAAAAdhbnN3ZXJzCQAETAAAAAICAAAADkl0IGlzIGNlcnRhaW4uCQAETAAAAAICAAAAE0l0IGlzIGRlY2lkZWRseSBzby4JAARMAAAAAgIAAAAQV2l0aG91dCBhIGRvdWJ0LgkABEwAAAACAgAAABFZZXMgLSBkZWZpbml0ZWx5LgkABEwAAAACAgAAABNZb3UgbWF5IHJlbHkgb24gaXQuCQAETAAAAAICAAAAEUFzIEkgc2VlIGl0LCB5ZXMuCQAETAAAAAICAAAADE1vc3QgbGlrZWx5LgkABEwAAAACAgAAAA1PdXRsb29rIGdvb2QuCQAETAAAAAICAAAABFllcy4JAARMAAAAAgIAAAATU2lnbnMgcG9pbnQgdG8geWVzLgkABEwAAAACAgAAABZSZXBseSBoYXp5LCB0cnkgYWdhaW4uCQAETAAAAAICAAAAEEFzayBhZ2FpbiBsYXRlci4JAARMAAAAAgIAAAAYQmV0dGVyIG5vdCB0ZWxsIHlvdSBub3cuCQAETAAAAAICAAAAE0Nhbm5vdCBwcmVkaWN0IG5vdy4JAARMAAAAAgIAAAAaQ29uY2VudHJhdGUgYW5kIGFzayBhZ2Fpbi4JAARMAAAAAgIAAAASRG9uJ3QgY291bnQgb24gaXQuCQAETAAAAAICAAAAD015IHJlcGx5IGlzIG5vLgkABEwAAAACAgAAABJNeSBzb3VyY2VzIHNheSBuby4JAARMAAAAAgIAAAAUT3V0bG9vayBub3Qgc28gZ29vZC4JAARMAAAAAgIAAAAOVmVyeSBkb3VidGZ1bC4FAAAAA25pbAEAAAAJZ2V0QW5zd2VyAAAAAgAAAAhxdWVzdGlvbgAAAA5wcmV2aW91c0Fuc3dlcgQAAAAEaGFzaAkAAfcAAAABCQABmwAAAAEJAAEsAAAAAgUAAAAIcXVlc3Rpb24FAAAADnByZXZpb3VzQW5zd2VyBAAAAAVpbmRleAkABLEAAAABBQAAAARoYXNoCQABkQAAAAIFAAAAB2Fuc3dlcnMJAABqAAAAAgUAAAAFaW5kZXgFAAAADGFuc3dlcnNDb3VudAEAAAARZ2V0UHJldmlvdXNBbnN3ZXIAAAABAAAAB2FkZHJlc3MEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAAdhZGRyZXNzAgAAAAJfYQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhBQAAAAdhZGRyZXNzAAAAAQAAAAFpAQAAAAZ0ZWxsbWUAAAABAAAACHF1ZXN0aW9uBAAAAA1jYWxsZXJBZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAABmFuc3dlcgkBAAAACWdldEFuc3dlcgAAAAIFAAAACHF1ZXN0aW9uCQEAAAARZ2V0UHJldmlvdXNBbnN3ZXIAAAABBQAAAA1jYWxsZXJBZGRyZXNzCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAADWNhbGxlckFkZHJlc3MCAAAAAl9xBQAAAAhxdWVzdGlvbgkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAA1jYWxsZXJBZGRyZXNzAgAAAAJfYQUAAAAGYW5zd2VyBQAAAANuaWwAAAAAOvBJMA==", "height": 1416625, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7gWERbYpfGePGYQbEuyTiCVvBmwSxfqb8iB5RGZLQPwJ Next: 8CdkqvaqBzjCGLV5kCrXFwd42QB36rWG9oQP3TcmhB9f Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let MaxConsuls = 5
4+let answersCount = 20
55
6-func getNumberByKey (key) = match getInteger(this, key) {
7- case v: Int =>
8- v
6+let answers = ["It is certain.", "It is decidedly so.", "Without a doubt.", "Yes - definitely.", "You may rely on it.", "As I see it, yes.", "Most likely.", "Outlook good.", "Yes.", "Signs point to yes.", "Reply hazy, try again.", "Ask again later.", "Better not tell you now.", "Cannot predict now.", "Concentrate and ask again.", "Don't count on it.", "My reply is no.", "My sources say no.", "Outlook not so good.", "Very doubtful."]
7+
8+func getAnswer (question,previousAnswer) = {
9+ let hash = sha256(toBytes((question + previousAnswer)))
10+ let index = toInt(hash)
11+answers[(index % answersCount)]
12+ }
13+
14+
15+func getPreviousAnswer (address) = match getString(this, (address + "_a")) {
16+ case a: String =>
17+ a
918 case _ =>
10- 0
19+ address
1120 }
1221
1322
14-func getStringByKey (key) = match getString(this, key) {
15- case v: String =>
16- v
17- case _ =>
18- ""
19-}
20-
21-
22-let ConsulsKey = "consuls"
23-
24-let BftCoefficientKey = "bft_coefficient"
25-
26-let LastRoundKey = "last_round"
27-
28-let consuls = split(getStringByKey(ConsulsKey), ",")
29-
30-let bftCoefficient = getNumberByKey(BftCoefficientKey)
31-
32-func validateSign (hash,sign,oracle) = if ((sign != "nil"))
33- then if (sigVerify(hash, fromBase58String(sign), fromBase58String(oracle)))
34- then 1
35- else 0
36- else 0
37-
38-
3923 @Callable(i)
40-func updateConsuls (newConsuls,stringSigns,round) = {
41- let signs = split(stringSigns, ",")
42- let count = ((((validateSign(toBytes(newConsuls), signs[0], consuls[0]) + validateSign(toBytes(newConsuls), signs[1], consuls[1])) + validateSign(toBytes(newConsuls), signs[2], consuls[2])) + validateSign(toBytes(newConsuls), signs[3], consuls[3])) + validateSign(toBytes(newConsuls), signs[4], consuls[4]))
43- if ((count > bftCoefficient))
44- then throw("invalid bft count")
45- else WriteSet([DataEntry(ConsulsKey, newConsuls), DataEntry(((LastRoundKey + "_") + toString(round)), round)])
24+func tellme (question) = {
25+ let callerAddress = toBase58String(i.caller.bytes)
26+ let answer = getAnswer(question, getPreviousAnswer(callerAddress))
27+ WriteSet([DataEntry((callerAddress + "_q"), question), DataEntry((callerAddress + "_a"), answer)])
4628 }
4729
4830

github/deemru/w8io/873ac7e 
21.12 ms