tx · 5yxjT88zqcecnJaMoTWpm53tY3eJuauTre8VbS9Cgg7w

3Mx4hQdkpvhhG7HV1sbK5PU6ZGVTEL8xKJj:  -0.00300000 Waves

2022.11.17 17:49 [2321250] smart account 3Mx4hQdkpvhhG7HV1sbK5PU6ZGVTEL8xKJj > SELF 0.00000000 Waves

{ "type": 13, "id": "5yxjT88zqcecnJaMoTWpm53tY3eJuauTre8VbS9Cgg7w", "fee": 300000, "feeAssetId": null, "timestamp": 1668696630997, "version": 1, "sender": "3Mx4hQdkpvhhG7HV1sbK5PU6ZGVTEL8xKJj", "senderPublicKey": "3YimckwWYL7DWQ9tzoWi2S8SmGQouVXcruupS5Xdn32c", "proofs": [ "3WJaxQYSE5km6ytGH1w8zWmqZnxjPHZMr5G6xZaL62FGvjFVujfF6FEHMp95JzJ9zpZPstSmChP9ApD7d5Gk2Asw" ], "script": "base64:BgIQCAISAwoBCBIHCgUICAgBAREAAVMCAl9fAANERUMAwIQ9AAZ1c2RuSWQJANkEAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzAgtjZmdfX3VzZG5JZAIsSGV6c2RRdVJEdHprc0FZVXk5N2dmaEt5N1oxTlcydVhZU0hBM2JncWVuTloBDGdldEludE9yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQdhZGRyZXNzBQNrZXkJAKwCAgkArAICCQCsAgIJAKUIAQUHYWRkcmVzcwIBLgUDa2V5Ag8gaXMgbm90IGRlZmluZWQBDGdldFN0ck9yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJAKwCAgkArAICCQCsAgIJAKUIAQUHYWRkcmVzcwIBLgUDa2V5Ag8gaXMgbm90IGRlZmluZWQBBmdldEludAMHYWRkcmVzcwNrZXkHZGVmYXVsdAkBC3ZhbHVlT3JFbHNlAgkAmggCBQdhZGRyZXNzBQNrZXkFB2RlZmF1bHQBBmdldFN0cgMHYWRkcmVzcwNrZXkHZGVmYXVsdAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQdhZGRyZXNzBQNrZXkFB2RlZmF1bHQBCmtleVRlYW1DYXABCHRlYW1Db2RlCQC5CQIJAMwIAgIYJXMlc19fdGVhbUNhcGl0YWxpemF0aW9uCQDMCAIFCHRlYW1Db2RlBQNuaWwFAVMBCmtleVRlYW1Ua24BCHRlYW1Db2RlCQC5CQIJAMwIAgIQJXMlc19fdGVhbVRva2VucwkAzAgCBQh0ZWFtQ29kZQUDbmlsBQFTAQprZXlUZWFtUm5kAQh0ZWFtQ29kZQkAuQkCCQDMCAICDyVzJXNfX3RlYW1Sb3VuZAkAzAgCBQh0ZWFtQ29kZQUDbmlsBQFTAQxrZXlUZWFtUmlza3MBCHRlYW1Db2RlCQC5CQIJAMwIAgIPJXMlc19fdGVhbVJpc2tzCQDMCAIFCHRlYW1Db2RlBQNuaWwFAVMBC2tleVVzZXJUZWFtAgR1c2VyCHRlYW1Db2RlCQC5CQIJAMwIAgIQJXMlcyVzX191c2VyVGVhbQkAzAgCBQh0ZWFtQ29kZQkAzAgCBQR1c2VyBQNuaWwFAVMBDWRhdGFUZWFtUmlza3MEBXJpc2sxBXJpc2syBXJpc2szBXJpc2s0CQC5CQIJAMwIAgIIJWQlZCVkJWQJAMwIAgUFcmlzazEJAMwIAgUFcmlzazIJAMwIAgUFcmlzazMJAMwIAgUFcmlzazQFA25pbAUBUwELcmVhZFRlYW1SbmQBCHRlYW1Db2RlCQEGZ2V0SW50AwUEdGhpcwkBCmtleVRlYW1SbmQBBQh0ZWFtQ29kZQABAQljYWxjUmlza3MCBXJvdW5kA3BtdAMJAAACBQVyb3VuZAABCQCWCgQJAGkCBQNwbXQAAwkAaQIFA3BtdAADCQBpAgUDcG10AAMAAAMJAAACBQVyb3VuZAACCQCWCgQAAAkAaQIFA3BtdAACCQBpAgUDcG10AAIAAAMJAAACBQVyb3VuZAADCQCWCgQAAAAABQNwbXQAAAkAlgoEAAAAAAAABQNwbXQBE3VwZGF0ZVRlYW1SaXNrT25CdXkCCHRlYW1Db2RlA3BtdAQIcmlza3NLZXkJAQxrZXlUZWFtUmlza3MBBQh0ZWFtQ29kZQQIcmlza3NTdHIJAQZnZXRTdHIDBQR0aGlzBQhyaXNrc0tleQkBDWRhdGFUZWFtUmlza3MEAgEwAgEwAgEwAgEwBAhyaXNrc0RhdAkAtQkCBQhyaXNrc1N0cgUBUwQJdGVhbVJvdW5kCQELcmVhZFRlYW1SbmQBBQh0ZWFtQ29kZQQIcGx1c1Jpc2sJAQljYWxjUmlza3MCBQl0ZWFtUm91bmQFA3BtdAQFcmlzazEJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhyaXNrc0RhdAABCAUIcGx1c1Jpc2sCXzEEBXJpc2syCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcmlza3NEYXQAAggFCHBsdXNSaXNrAl8yBAVyaXNrMwkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHJpc2tzRGF0AAMIBQhwbHVzUmlzawJfMwQFcmlzazQJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhyaXNrc0RhdAAECAUIcGx1c1Jpc2sCXzQJAQtTdHJpbmdFbnRyeQIFCHJpc2tzS2V5CQENZGF0YVRlYW1SaXNrcwQFBXJpc2sxBQVyaXNrMgUFcmlzazMFBXJpc2s0ARV1cGRhdGVVc2VyU2hhcmVJblRlYW0EC3VzZXJBZGRyZXNzCHRlYW1Db2RlC3RlYW1Ua25EaWZmA3BtdAQDa2V5CQELa2V5VXNlclRlYW0CBQt1c2VyQWRkcmVzcwUIdGVhbUNvZGUEBGRhdGEJALUJAgkBBmdldFN0cgMFBHRoaXMFA2tleQIKJWQlZF9fMF9fMAUBUwQNdGVhbVRrbkFtdE5ldwkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGRhdGEAAQULdGVhbVRrbkRpZmYEDWludmVzdFVzZG5OZXcJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRkYXRhAAIFA3BtdAkBC1N0cmluZ0VudHJ5AgUDa2V5CQC5CQIJAMwIAgIEJWQlZAkAzAgCBQ10ZWFtVGtuQW10TmV3CQDMCAIFDWludmVzdFVzZG5OZXcFA25pbAUBUwIBaQEHYnV5VGVhbQEIdGVhbUNvZGUEBHVzZXIJAKUIAQgFAWkGY2FsbGVyBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQGcG10QW10CAUDcG10BmFtb3VudAQKcG10QXNzZXRJZAgFA3BtdAdhc3NldElkAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIVMSBwYXltZW50IGlzIGV4cGVjdGVkAwkBAiE9AgUKcG10QXNzZXRJZAUGdXNkbklkCQACAQIYaW52YWxpZCBwYXltZW50IGFzc2V0IGlkBAd0ZWFtQ2FwCQEMZ2V0SW50T3JGYWlsAgUEdGhpcwkBCmtleVRlYW1DYXABBQh0ZWFtQ29kZQQHdGVhbVRrbgkBDGdldEludE9yRmFpbAIFBHRoaXMJAQprZXlUZWFtVGtuAQUIdGVhbUNvZGUEBXByaWNlAwkBAiE9AgUHdGVhbVRrbgAACQBrAwUHdGVhbUNhcAUDREVDBQd0ZWFtVGtuBQNERUMEDnRlYW1Ua25Gb3JVc2VyCQBrAwUGcG10QW10BQNERUMFBXByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEKa2V5VGVhbUNhcAEFCHRlYW1Db2RlCQBkAgUHdGVhbUNhcAUGcG10QW10CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEKa2V5VGVhbVRrbgEFCHRlYW1Db2RlCQBkAgUHdGVhbVRrbgUOdGVhbVRrbkZvclVzZXIJAMwIAgkBFXVwZGF0ZVVzZXJTaGFyZUluVGVhbQQFBHVzZXIFCHRlYW1Db2RlBQ50ZWFtVGtuRm9yVXNlcgUGcG10QW10CQDMCAIJARN1cGRhdGVUZWFtUmlza09uQnV5AgUIdGVhbUNvZGUFBnBtdEFtdAUDbmlsAWkBBXNjb3JlBQVyb3VuZAxob21lVGVhbUNvZGUMYXdheVRlYW1Db2RlDWhvbWVUZWFtR29hbHMNYXdheVRlYW1Hb2FscwUDbmlsACPRHkA=", "chainId": 84, "height": 2321250, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5MSbWY94Aq4PgE3kZYpzi4mo16bXbkdhVTdikmX9Ztgq Next: none Diff:
OldNewDifferences
1010 func getIntOrFail (address,key) = valueOrErrorMessage(getInteger(address, key), (((toString(address) + ".") + key) + " is not defined"))
1111
1212
13+func getStrOrFail (address,key) = valueOrErrorMessage(getString(address, key), (((toString(address) + ".") + key) + " is not defined"))
14+
15+
16+func getInt (address,key,default) = valueOrElse(getInteger(address, key), default)
17+
18+
1319 func getStr (address,key,default) = valueOrElse(getString(address, key), default)
1420
1521
1925 func keyTeamTkn (teamCode) = makeString(["%s%s__teamTokens", teamCode], S)
2026
2127
28+func keyTeamRnd (teamCode) = makeString(["%s%s__teamRound", teamCode], S)
29+
30+
31+func keyTeamRisks (teamCode) = makeString(["%s%s__teamRisks", teamCode], S)
32+
33+
2234 func keyUserTeam (user,teamCode) = makeString(["%s%s%s__userTeam", teamCode, user], S)
2335
2436
25-func updateUserTeam (key,teamTknDiff,investDiff) = {
26- let data = split(getStr(this, key, "%d%d__0__0"), S)
27- let teamTknAmtNew = toString((parseIntValue(data[1]) + teamTknDiff))
28- let investUsdnNew = toString((parseIntValue(data[2]) + investDiff))
29- StringEntry(key, makeString(["%d%d", teamTknAmtNew, investUsdnNew], S))
37+func dataTeamRisks (risk1,risk2,risk3,risk4) = makeString(["%d%d%d%d", risk1, risk2, risk3, risk4], S)
38+
39+
40+func readTeamRnd (teamCode) = getInt(this, keyTeamRnd(teamCode), 1)
41+
42+
43+func calcRisks (round,pmt) = if ((round == 1))
44+ then $Tuple4((pmt / 3), (pmt / 3), (pmt / 3), 0)
45+ else if ((round == 2))
46+ then $Tuple4(0, (pmt / 2), (pmt / 2), 0)
47+ else if ((round == 3))
48+ then $Tuple4(0, 0, pmt, 0)
49+ else $Tuple4(0, 0, 0, pmt)
50+
51+
52+func updateTeamRiskOnBuy (teamCode,pmt) = {
53+ let risksKey = keyTeamRisks(teamCode)
54+ let risksStr = getStr(this, risksKey, dataTeamRisks("0", "0", "0", "0"))
55+ let risksDat = split(risksStr, S)
56+ let teamRound = readTeamRnd(teamCode)
57+ let plusRisk = calcRisks(teamRound, pmt)
58+ let risk1 = toString((parseIntValue(risksDat[1]) + plusRisk._1))
59+ let risk2 = toString((parseIntValue(risksDat[2]) + plusRisk._2))
60+ let risk3 = toString((parseIntValue(risksDat[3]) + plusRisk._3))
61+ let risk4 = toString((parseIntValue(risksDat[4]) + plusRisk._4))
62+ StringEntry(risksKey, dataTeamRisks(risk1, risk2, risk3, risk4))
3063 }
3164
3265
33-func score (round,matchNum,homeTeamGoals,awayTeamGoals) = nil
66+func updateUserShareInTeam (userAddress,teamCode,teamTknDiff,pmt) = {
67+ let key = keyUserTeam(userAddress, teamCode)
68+ let data = split(getStr(this, key, "%d%d__0__0"), S)
69+ let teamTknAmtNew = toString((parseIntValue(data[1]) + teamTknDiff))
70+ let investUsdnNew = toString((parseIntValue(data[2]) + pmt))
71+ StringEntry(key, makeString(["%d%d", teamTknAmtNew, investUsdnNew], S))
72+ }
3473
3574
3675 @Callable(i)
5089 then fraction(teamCap, DEC, teamTkn)
5190 else DEC
5291 let teamTknForUser = fraction(pmtAmt, DEC, price)
53-[IntegerEntry(keyTeamCap(teamCode), (teamCap + pmtAmt)), IntegerEntry(keyTeamTkn(teamCode), (teamTkn + teamTknForUser)), updateUserTeam(keyUserTeam(user, teamCode), teamTknForUser, pmtAmt)]
92+[IntegerEntry(keyTeamCap(teamCode), (teamCap + pmtAmt)), IntegerEntry(keyTeamTkn(teamCode), (teamTkn + teamTknForUser)), updateUserShareInTeam(user, teamCode, teamTknForUser, pmtAmt), updateTeamRiskOnBuy(teamCode, pmtAmt)]
5493 }
5594 }
95+
96+
97+
98+@Callable(i)
99+func score (round,homeTeamCode,awayTeamCode,homeTeamGoals,awayTeamGoals) = nil
56100
57101
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let S = "__"
55
66 let DEC = 1000000
77
88 let usdnId = fromBase58String(valueOrElse(getString(this, "cfg__usdnId"), "HezsdQuRDtzksAYUy97gfhKy7Z1NW2uXYSHA3bgqenNZ"))
99
1010 func getIntOrFail (address,key) = valueOrErrorMessage(getInteger(address, key), (((toString(address) + ".") + key) + " is not defined"))
1111
1212
13+func getStrOrFail (address,key) = valueOrErrorMessage(getString(address, key), (((toString(address) + ".") + key) + " is not defined"))
14+
15+
16+func getInt (address,key,default) = valueOrElse(getInteger(address, key), default)
17+
18+
1319 func getStr (address,key,default) = valueOrElse(getString(address, key), default)
1420
1521
1622 func keyTeamCap (teamCode) = makeString(["%s%s__teamCapitalization", teamCode], S)
1723
1824
1925 func keyTeamTkn (teamCode) = makeString(["%s%s__teamTokens", teamCode], S)
2026
2127
28+func keyTeamRnd (teamCode) = makeString(["%s%s__teamRound", teamCode], S)
29+
30+
31+func keyTeamRisks (teamCode) = makeString(["%s%s__teamRisks", teamCode], S)
32+
33+
2234 func keyUserTeam (user,teamCode) = makeString(["%s%s%s__userTeam", teamCode, user], S)
2335
2436
25-func updateUserTeam (key,teamTknDiff,investDiff) = {
26- let data = split(getStr(this, key, "%d%d__0__0"), S)
27- let teamTknAmtNew = toString((parseIntValue(data[1]) + teamTknDiff))
28- let investUsdnNew = toString((parseIntValue(data[2]) + investDiff))
29- StringEntry(key, makeString(["%d%d", teamTknAmtNew, investUsdnNew], S))
37+func dataTeamRisks (risk1,risk2,risk3,risk4) = makeString(["%d%d%d%d", risk1, risk2, risk3, risk4], S)
38+
39+
40+func readTeamRnd (teamCode) = getInt(this, keyTeamRnd(teamCode), 1)
41+
42+
43+func calcRisks (round,pmt) = if ((round == 1))
44+ then $Tuple4((pmt / 3), (pmt / 3), (pmt / 3), 0)
45+ else if ((round == 2))
46+ then $Tuple4(0, (pmt / 2), (pmt / 2), 0)
47+ else if ((round == 3))
48+ then $Tuple4(0, 0, pmt, 0)
49+ else $Tuple4(0, 0, 0, pmt)
50+
51+
52+func updateTeamRiskOnBuy (teamCode,pmt) = {
53+ let risksKey = keyTeamRisks(teamCode)
54+ let risksStr = getStr(this, risksKey, dataTeamRisks("0", "0", "0", "0"))
55+ let risksDat = split(risksStr, S)
56+ let teamRound = readTeamRnd(teamCode)
57+ let plusRisk = calcRisks(teamRound, pmt)
58+ let risk1 = toString((parseIntValue(risksDat[1]) + plusRisk._1))
59+ let risk2 = toString((parseIntValue(risksDat[2]) + plusRisk._2))
60+ let risk3 = toString((parseIntValue(risksDat[3]) + plusRisk._3))
61+ let risk4 = toString((parseIntValue(risksDat[4]) + plusRisk._4))
62+ StringEntry(risksKey, dataTeamRisks(risk1, risk2, risk3, risk4))
3063 }
3164
3265
33-func score (round,matchNum,homeTeamGoals,awayTeamGoals) = nil
66+func updateUserShareInTeam (userAddress,teamCode,teamTknDiff,pmt) = {
67+ let key = keyUserTeam(userAddress, teamCode)
68+ let data = split(getStr(this, key, "%d%d__0__0"), S)
69+ let teamTknAmtNew = toString((parseIntValue(data[1]) + teamTknDiff))
70+ let investUsdnNew = toString((parseIntValue(data[2]) + pmt))
71+ StringEntry(key, makeString(["%d%d", teamTknAmtNew, investUsdnNew], S))
72+ }
3473
3574
3675 @Callable(i)
3776 func buyTeam (teamCode) = {
3877 let user = toString(i.caller)
3978 let pmt = i.payments[0]
4079 let pmtAmt = pmt.amount
4180 let pmtAssetId = pmt.assetId
4281 if ((size(i.payments) != 1))
4382 then throw("1 payment is expected")
4483 else if ((pmtAssetId != usdnId))
4584 then throw("invalid payment asset id")
4685 else {
4786 let teamCap = getIntOrFail(this, keyTeamCap(teamCode))
4887 let teamTkn = getIntOrFail(this, keyTeamTkn(teamCode))
4988 let price = if ((teamTkn != 0))
5089 then fraction(teamCap, DEC, teamTkn)
5190 else DEC
5291 let teamTknForUser = fraction(pmtAmt, DEC, price)
53-[IntegerEntry(keyTeamCap(teamCode), (teamCap + pmtAmt)), IntegerEntry(keyTeamTkn(teamCode), (teamTkn + teamTknForUser)), updateUserTeam(keyUserTeam(user, teamCode), teamTknForUser, pmtAmt)]
92+[IntegerEntry(keyTeamCap(teamCode), (teamCap + pmtAmt)), IntegerEntry(keyTeamTkn(teamCode), (teamTkn + teamTknForUser)), updateUserShareInTeam(user, teamCode, teamTknForUser, pmtAmt), updateTeamRiskOnBuy(teamCode, pmtAmt)]
5493 }
5594 }
95+
96+
97+
98+@Callable(i)
99+func score (round,homeTeamCode,awayTeamCode,homeTeamGoals,awayTeamGoals) = nil
56100
57101

github/deemru/w8io/169f3d6 
42.71 ms