tx · FK8GQNzryPcNorXyUUZcmwcd4X72EftB7o4hUGAkxAC1

3N18S8xfWJYHVuGfJcpcPVh7LsnqR9hKTcc:  -0.01400000 Waves

2019.09.08 11:13 [666846] smart account 3N18S8xfWJYHVuGfJcpcPVh7LsnqR9hKTcc > SELF 0.00000000 Waves

{ "type": 13, "id": "FK8GQNzryPcNorXyUUZcmwcd4X72EftB7o4hUGAkxAC1", "fee": 1400000, "feeAssetId": null, "timestamp": 1567930450262, "version": 1, "sender": "3N18S8xfWJYHVuGfJcpcPVh7LsnqR9hKTcc", "senderPublicKey": "9cETBksYN8YMHGvDB6BEqmH9HScpCMBRZwnjCviRQ9aA", "proofs": [ "5JzbcyqcsdYS1LhsEkTwtgd85Smdr5j81kHEdkaiWhs8b3LuW38mgsAVZ3C6TS9QiomFywfopS9ArokN2FwHaU2L" ], "script": "base64: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", "chainId": 84, "height": 666846, "spentComplexity": 0 } View: original | compacted Prev: CzUE9pe3z5M47mn3FPKvBJHdSrVUhmf9sGFZvCcsgGnz Next: EkWFWGgvnXcrA7uGP1zgENEGHVkGnW76CXtJcjhSrPcb Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let PRICE = 100000000
55
66 let PATENTPRICE = 200000000
77
88 let ORACLE = "ORACLE"
99
1010 let WIN = "WIN"
1111
1212 let LOSE = "LOSE"
1313
1414 let NONE = "none"
1515
1616 func getNumberByKey (key) = {
1717 let num = match getInteger(this, key) {
1818 case a: Int =>
1919 a
2020 case _ =>
2121 0
2222 }
2323 num
2424 }
2525
2626
2727 func getStrByKey (key) = {
2828 let str = match getString(this, key) {
2929 case a: String =>
3030 a
3131 case _ =>
3232 NONE
3333 }
3434 str
3535 }
3636
3737
3838 func validateTwoCoords (x1,y1,x2,y2) = if ((x2 > x1))
3939 then false
4040 else if (if ((x1 == x2))
4141 then (y2 > y1)
4242 else false)
4343 then false
4444 else true
4545
4646
4747 func validateCoords (x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6) = if (!(validateTwoCoords(x1, y1, x2, y2)))
4848 then false
4949 else if (!(validateTwoCoords(x2, y2, x3, y3)))
5050 then false
5151 else if (!(validateTwoCoords(x3, y3, x4, y4)))
5252 then false
5353 else if (!(validateTwoCoords(x4, y4, x5, y5)))
5454 then false
5555 else if (!(validateTwoCoords(x5, y5, x6, y6)))
5656 then false
5757 else true
5858
5959
6060 func genKeyFromCoords (x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6) = (((((((((((toString(x1) + toString(y1)) + toString(x2)) + toString(y2)) + toString(x3)) + toString(y3)) + toString(x4)) + toString(y4)) + toString(x5)) + toString(y5)) + toString(x6)) + toString(y6))
6161
6262
6363 func getKeyBalanceUser (account) = (account + "_balance")
6464
6565
6666 func getValueBalanceUser (account) = getNumberByKey(getKeyBalanceUser(account))
6767
6868
6969 func getKeyWinCount (user) = (user + "_wincnt")
7070
7171
7272 func getValueWinCount (user) = getNumberByKey(getKeyWinCount(user))
7373
7474
7575 func getKeyLoseCount (user) = (user + "_losecnt")
7676
7777
7878 func getValueLoseCount (user) = getNumberByKey(getKeyLoseCount(user))
7979
8080
8181 @Callable(i)
8282 func patent (x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6) = {
8383 let pmt = extract(i.payment)
8484 if (isDefined(pmt.assetId))
8585 then throw("can use WAVES only at the moment")
8686 else {
8787 let userAddress = toBase58String(i.caller.bytes)
8888 if ((pmt.amount != PRICE))
8989 then throw("purchase amount cannot be not equal to the price")
9090 else if (!(validateCoords(x1, y1, x2, y2, x3, y3, x4, y4, x5, y5, x6, y6)))
9191 then throw("invalid coordinates order")
9292 else if ((getStrByKey(genKeyFromCoords(x1, y1, x2, y2, x3, y3, x4, y4, x5, y5, x6, y6)) != NONE))
9393 then throw("this patent is already exists")
9494 else WriteSet([DataEntry(genKeyFromCoords(x1, y1, x2, y2, x3, y3, x4, y4, x5, y5, x6, y6), userAddress)])
9595 }
9696 }
9797
9898
9999
100100 @Callable(i)
101101 func buyPatent (x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6) = {
102102 let pmt = extract(i.payment)
103103 if (isDefined(pmt.assetId))
104104 then throw("can use WAVES only at the moment")
105105 else {
106106 let userAddress = toBase58String(i.caller.bytes)
107107 let patentOwnerAddress = getStrByKey(genKeyFromCoords(x1, y1, x2, y2, x3, y3, x4, y4, x5, y5, x6, y6))
108108 if ((pmt.amount != PATENTPRICE))
109109 then throw("purchase amount cannot be not equal to the price")
110110 else if (validateCoords(x1, y1, x2, y2, x3, y3, x4, y4, x5, y5, x6, y6))
111111 then throw("invalid coordinates order")
112112 else if ((patentOwnerAddress == NONE))
113113 then throw("there is no such patent")
114114 else WriteSet([DataEntry(genKeyFromCoords(x1, y1, x2, y2, x3, y3, x4, y4, x5, y5, x6, y6), userAddress), DataEntry(getKeyBalanceUser(patentOwnerAddress), (getValueBalanceUser(patentOwnerAddress) + pmt.amount))])
115115 }
116116 }
117117
118118
119119
120120 @Callable(i)
121121 func withdraw () = {
122122 let userAddress = toBase58String(i.caller.bytes)
123123 let balance = getValueBalanceUser(userAddress)
124124 if ((0 >= balance))
125125 then throw("insufficient balance")
126126 else ScriptResult(WriteSet([DataEntry(getKeyBalanceUser(userAddress), 0)]), TransferSet([ScriptTransfer(addressFromStringValue(userAddress), balance, unit)]))
127127 }
128128
129129
130130
131131 @Callable(i)
132132 func endGame (game,winner,loser) = {
133133 let oracleAddres = toBase58String(i.caller.bytes)
134134 if ((oracleAddres != ORACLE))
135135 then throw("only oracle can inform about games results")
136136 else if ((winner == loser))
137137 then throw("winner and loser must be different")
138138 else if ((getStrByKey(game) != NONE))
139139 then throw("this game has already been played")
140140 else WriteSet([DataEntry(game, (((winner + "-WIN;") + loser) + "-LOSE")), DataEntry(getKeyWinCount(winner), (getValueWinCount(winner) + 1)), DataEntry(getKeyLoseCount(loser), (getValueLoseCount(loser) + 1))])
141141 }
142142
143143

github/deemru/w8io/3ef1775 
43.46 ms