tx · 6z9Cgr8TuTMgUjKTpFiE9G5FZTvs8NxdokNtxJLcx5xA

3MtC32eAy42jhwnHpfYCbUj11iUkXDQdYpt:  -0.00400000 Waves

2022.11.18 18:23 [2322731] smart account 3MtC32eAy42jhwnHpfYCbUj11iUkXDQdYpt > SELF 0.00000000 Waves

{ "type": 13, "id": "6z9Cgr8TuTMgUjKTpFiE9G5FZTvs8NxdokNtxJLcx5xA", "fee": 400000, "feeAssetId": null, "timestamp": 1668784997814, "version": 1, "sender": "3MtC32eAy42jhwnHpfYCbUj11iUkXDQdYpt", "senderPublicKey": "3xUNfrYKuaZmnMzb6e9tKC4azGnvWZyLzeKdUgAeFFpV", "proofs": [ "tjhcpwcqUaCKBdmaKxCJvCdvFB361iujenhh1T7AYjRjSHePMYjJAyZC3Aab4rBNpf6A8qRWMBSATrLUx6XHSSM" ], "script": "base64:BgIVCAISAwoBCBIDCgEIEgcKBQgICAEBEwABUwICX18AA0RFQwDAhD0BDGdldEludE9yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQdhZGRyZXNzBQNrZXkJAKwCAgkArAICCQCsAgIJAKUIAQUHYWRkcmVzcwIBLgUDa2V5Ag8gaXMgbm90IGRlZmluZWQBDGdldFN0ck9yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJAKwCAgkArAICCQCsAgIJAKUIAQUHYWRkcmVzcwIBLgUDa2V5Ag8gaXMgbm90IGRlZmluZWQBBmdldEludAMHYWRkcmVzcwNrZXkHZGVmYXVsdAkBC3ZhbHVlT3JFbHNlAgkAmggCBQdhZGRyZXNzBQNrZXkFB2RlZmF1bHQBBmdldFN0cgMHYWRkcmVzcwNrZXkHZGVmYXVsdAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQdhZGRyZXNzBQNrZXkFB2RlZmF1bHQBEmtleUNmZ1ByaWNlQXNzZXRJZAACFSVzJXNfX2NmZ19fcHJpY2VBc3NldAAGdXNkbklkCQDZBAEJAQZnZXRTdHIDBQR0aGlzCQESa2V5Q2ZnUHJpY2VBc3NldElkAAIsSGV6c2RRdVJEdHprc0FZVXk5N2dmaEt5N1oxTlcydVhZU0hBM2JncWVuTloBCmtleVRlYW1DYXABCHRlYW1Db2RlCQC5CQIJAMwIAgIYJXMlc19fdGVhbUNhcGl0YWxpemF0aW9uCQDMCAIFCHRlYW1Db2RlBQNuaWwFAVMBCmtleVRlYW1Ua24BCHRlYW1Db2RlCQC5CQIJAMwIAgIQJXMlc19fdGVhbVRva2VucwkAzAgCBQh0ZWFtQ29kZQUDbmlsBQFTAQprZXlUZWFtUm5kAQh0ZWFtQ29kZQkAuQkCCQDMCAICDyVzJXNfX3RlYW1Sb3VuZAkAzAgCBQh0ZWFtQ29kZQUDbmlsBQFTAQxrZXlUZWFtUmlza3MBCHRlYW1Db2RlCQC5CQIJAMwIAgIPJXMlc19fdGVhbVJpc2tzCQDMCAIFCHRlYW1Db2RlBQNuaWwFAVMBC2tleVVzZXJUZWFtAgR1c2VyCHRlYW1Db2RlCQC5CQIJAMwIAgIQJXMlcyVzX191c2VyVGVhbQkAzAgCBQh0ZWFtQ29kZQkAzAgCBQR1c2VyBQNuaWwFAVMBDWRhdGFUZWFtUmlza3MEBXJpc2sxBXJpc2syBXJpc2szBXJpc2s0CQC5CQIJAMwIAgIIJWQlZCVkJWQJAMwIAgUFcmlzazEJAMwIAgUFcmlzazIJAMwIAgUFcmlzazMJAMwIAgUFcmlzazQFA25pbAUBUwELcmVhZFRlYW1SbmQBCHRlYW1Db2RlCQEGZ2V0SW50AwUEdGhpcwkBCmtleVRlYW1SbmQBBQh0ZWFtQ29kZQABAQ9jaGVja1NlbGZTZW5kZXIBAWkDCQECIT0CBQR0aGlzCAUBaQZjYWxsZXIJAAIBAgtub3QgYWxsb3dlZAYBCWNhbGNSaXNrcwIFcm91bmQDcG10AwkAAAIFBXJvdW5kAAEJAJYKBAkAaQIFA3BtdAADCQBpAgUDcG10AAMJAGkCBQNwbXQAAwAAAwkAAAIFBXJvdW5kAAIJAJYKBAAACQBpAgUDcG10AAIJAGkCBQNwbXQAAgAAAwkAAAIFBXJvdW5kAAMJAJYKBAAAAAAFA3BtdAAACQCWCgQAAAAAAAAFA3BtdAETdXBkYXRlVGVhbVJpc2tPbkJ1eQIIdGVhbUNvZGUDcG10BAhyaXNrc0tleQkBDGtleVRlYW1SaXNrcwEFCHRlYW1Db2RlBAhyaXNrc1N0cgkBBmdldFN0cgMFBHRoaXMFCHJpc2tzS2V5CQENZGF0YVRlYW1SaXNrcwQCATACATACATACATAECHJpc2tzRGF0CQC1CQIFCHJpc2tzU3RyBQFTBAl0ZWFtUm91bmQJAQtyZWFkVGVhbVJuZAEFCHRlYW1Db2RlBAhwbHVzUmlzawkBCWNhbGNSaXNrcwIFCXRlYW1Sb3VuZAUDcG10BAVyaXNrMQkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHJpc2tzRGF0AAEIBQhwbHVzUmlzawJfMQQFcmlzazIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhyaXNrc0RhdAACCAUIcGx1c1Jpc2sCXzIEBXJpc2szCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcmlza3NEYXQAAwgFCHBsdXNSaXNrAl8zBAVyaXNrNAkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHJpc2tzRGF0AAQIBQhwbHVzUmlzawJfNAkBC1N0cmluZ0VudHJ5AgUIcmlza3NLZXkJAQ1kYXRhVGVhbVJpc2tzBAUFcmlzazEFBXJpc2syBQVyaXNrMwUFcmlzazQBFXVwZGF0ZVVzZXJTaGFyZUluVGVhbQQLdXNlckFkZHJlc3MIdGVhbUNvZGULdGVhbVRrbkRpZmYDcG10BANrZXkJAQtrZXlVc2VyVGVhbQIFC3VzZXJBZGRyZXNzBQh0ZWFtQ29kZQQEZGF0YQkAtQkCCQEGZ2V0U3RyAwUEdGhpcwUDa2V5AgolZCVkX18wX18wBQFTBA10ZWFtVGtuQW10TmV3CQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEZGF0YQABBQt0ZWFtVGtuRGlmZgQNaW52ZXN0VXNkbk5ldwkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGRhdGEAAgUDcG10CQELU3RyaW5nRW50cnkCBQNrZXkJALkJAgkAzAgCAgQlZCVkCQDMCAIFDXRlYW1Ua25BbXROZXcJAMwIAgUNaW52ZXN0VXNkbk5ldwUDbmlsBQFTAwFpAQRpbml0AQxwcmljZUFzc2V0SWQEBmNoZWNrcwkAzAgCCQEPY2hlY2tTZWxmU2VuZGVyAQUBaQUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzCQDMCAIJAQtTdHJpbmdFbnRyeQIJARJrZXlDZmdQcmljZUFzc2V0SWQABQxwcmljZUFzc2V0SWQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQdidXlUZWFtAQh0ZWFtQ29kZQQEdXNlcgkApQgBCAUBaQZjYWxsZXIEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABAZwbXRBbXQIBQNwbXQGYW1vdW50BApwbXRBc3NldElkCAUDcG10B2Fzc2V0SWQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhUxIHBheW1lbnQgaXMgZXhwZWN0ZWQDCQECIT0CBQpwbXRBc3NldElkBQZ1c2RuSWQJAAIBAhhpbnZhbGlkIHBheW1lbnQgYXNzZXQgaWQEB3RlYW1DYXAJAQxnZXRJbnRPckZhaWwCBQR0aGlzCQEKa2V5VGVhbUNhcAEFCHRlYW1Db2RlBAd0ZWFtVGtuCQEMZ2V0SW50T3JGYWlsAgUEdGhpcwkBCmtleVRlYW1Ua24BBQh0ZWFtQ29kZQQFcHJpY2UDCQECIT0CBQd0ZWFtVGtuAAAJAGsDBQd0ZWFtQ2FwBQNERUMFB3RlYW1Ua24FA0RFQwQOdGVhbVRrbkZvclVzZXIJAGsDBQZwbXRBbXQFA0RFQwUFcHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJAQprZXlUZWFtQ2FwAQUIdGVhbUNvZGUJAGQCBQd0ZWFtQ2FwBQZwbXRBbXQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQprZXlUZWFtVGtuAQUIdGVhbUNvZGUJAGQCBQd0ZWFtVGtuBQ50ZWFtVGtuRm9yVXNlcgkAzAgCCQEVdXBkYXRlVXNlclNoYXJlSW5UZWFtBAUEdXNlcgUIdGVhbUNvZGUFDnRlYW1Ua25Gb3JVc2VyBQZwbXRBbXQJAMwIAgkBE3VwZGF0ZVRlYW1SaXNrT25CdXkCBQh0ZWFtQ29kZQUGcG10QW10BQNuaWwBaQEFc2NvcmUFBXJvdW5kDGhvbWVUZWFtQ29kZQxhd2F5VGVhbUNvZGUNaG9tZVRlYW1Hb2Fscw1hd2F5VGVhbUdvYWxzBQNuaWwAYyPMRA==", "chainId": 84, "height": 2322731, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2HihmDocLeyTiR7kShy6wCwEj4Ma5zHWuYAJBtp6FQiF Next: CHAkh6qCam3S3soooSMjRHdYEbMdNS4QFo9dKpHqs5Za Diff:
OldNewDifferences
8484 func init (priceAssetId) = {
8585 let checks = [checkSelfSender(i)]
8686 if ((checks == checks))
87- then [StringEntry("cfg__priceAsset", priceAssetId)]
87+ then [StringEntry(keyCfgPriceAssetId(), priceAssetId)]
8888 else throw("Strict value is not equal to itself.")
8989 }
9090
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let S = "__"
55
66 let DEC = 1000000
77
88 func getIntOrFail (address,key) = valueOrErrorMessage(getInteger(address, key), (((toString(address) + ".") + key) + " is not defined"))
99
1010
1111 func getStrOrFail (address,key) = valueOrErrorMessage(getString(address, key), (((toString(address) + ".") + key) + " is not defined"))
1212
1313
1414 func getInt (address,key,default) = valueOrElse(getInteger(address, key), default)
1515
1616
1717 func getStr (address,key,default) = valueOrElse(getString(address, key), default)
1818
1919
2020 func keyCfgPriceAssetId () = "%s%s__cfg__priceAsset"
2121
2222
2323 let usdnId = fromBase58String(getStr(this, keyCfgPriceAssetId(), "HezsdQuRDtzksAYUy97gfhKy7Z1NW2uXYSHA3bgqenNZ"))
2424
2525 func keyTeamCap (teamCode) = makeString(["%s%s__teamCapitalization", teamCode], S)
2626
2727
2828 func keyTeamTkn (teamCode) = makeString(["%s%s__teamTokens", teamCode], S)
2929
3030
3131 func keyTeamRnd (teamCode) = makeString(["%s%s__teamRound", teamCode], S)
3232
3333
3434 func keyTeamRisks (teamCode) = makeString(["%s%s__teamRisks", teamCode], S)
3535
3636
3737 func keyUserTeam (user,teamCode) = makeString(["%s%s%s__userTeam", teamCode, user], S)
3838
3939
4040 func dataTeamRisks (risk1,risk2,risk3,risk4) = makeString(["%d%d%d%d", risk1, risk2, risk3, risk4], S)
4141
4242
4343 func readTeamRnd (teamCode) = getInt(this, keyTeamRnd(teamCode), 1)
4444
4545
4646 func checkSelfSender (i) = if ((this != i.caller))
4747 then throw("not allowed")
4848 else true
4949
5050
5151 func calcRisks (round,pmt) = if ((round == 1))
5252 then $Tuple4((pmt / 3), (pmt / 3), (pmt / 3), 0)
5353 else if ((round == 2))
5454 then $Tuple4(0, (pmt / 2), (pmt / 2), 0)
5555 else if ((round == 3))
5656 then $Tuple4(0, 0, pmt, 0)
5757 else $Tuple4(0, 0, 0, pmt)
5858
5959
6060 func updateTeamRiskOnBuy (teamCode,pmt) = {
6161 let risksKey = keyTeamRisks(teamCode)
6262 let risksStr = getStr(this, risksKey, dataTeamRisks("0", "0", "0", "0"))
6363 let risksDat = split(risksStr, S)
6464 let teamRound = readTeamRnd(teamCode)
6565 let plusRisk = calcRisks(teamRound, pmt)
6666 let risk1 = toString((parseIntValue(risksDat[1]) + plusRisk._1))
6767 let risk2 = toString((parseIntValue(risksDat[2]) + plusRisk._2))
6868 let risk3 = toString((parseIntValue(risksDat[3]) + plusRisk._3))
6969 let risk4 = toString((parseIntValue(risksDat[4]) + plusRisk._4))
7070 StringEntry(risksKey, dataTeamRisks(risk1, risk2, risk3, risk4))
7171 }
7272
7373
7474 func updateUserShareInTeam (userAddress,teamCode,teamTknDiff,pmt) = {
7575 let key = keyUserTeam(userAddress, teamCode)
7676 let data = split(getStr(this, key, "%d%d__0__0"), S)
7777 let teamTknAmtNew = toString((parseIntValue(data[1]) + teamTknDiff))
7878 let investUsdnNew = toString((parseIntValue(data[2]) + pmt))
7979 StringEntry(key, makeString(["%d%d", teamTknAmtNew, investUsdnNew], S))
8080 }
8181
8282
8383 @Callable(i)
8484 func init (priceAssetId) = {
8585 let checks = [checkSelfSender(i)]
8686 if ((checks == checks))
87- then [StringEntry("cfg__priceAsset", priceAssetId)]
87+ then [StringEntry(keyCfgPriceAssetId(), priceAssetId)]
8888 else throw("Strict value is not equal to itself.")
8989 }
9090
9191
9292
9393 @Callable(i)
9494 func buyTeam (teamCode) = {
9595 let user = toString(i.caller)
9696 let pmt = i.payments[0]
9797 let pmtAmt = pmt.amount
9898 let pmtAssetId = pmt.assetId
9999 if ((size(i.payments) != 1))
100100 then throw("1 payment is expected")
101101 else if ((pmtAssetId != usdnId))
102102 then throw("invalid payment asset id")
103103 else {
104104 let teamCap = getIntOrFail(this, keyTeamCap(teamCode))
105105 let teamTkn = getIntOrFail(this, keyTeamTkn(teamCode))
106106 let price = if ((teamTkn != 0))
107107 then fraction(teamCap, DEC, teamTkn)
108108 else DEC
109109 let teamTknForUser = fraction(pmtAmt, DEC, price)
110110 [IntegerEntry(keyTeamCap(teamCode), (teamCap + pmtAmt)), IntegerEntry(keyTeamTkn(teamCode), (teamTkn + teamTknForUser)), updateUserShareInTeam(user, teamCode, teamTknForUser, pmtAmt), updateTeamRiskOnBuy(teamCode, pmtAmt)]
111111 }
112112 }
113113
114114
115115
116116 @Callable(i)
117117 func score (round,homeTeamCode,awayTeamCode,homeTeamGoals,awayTeamGoals) = nil
118118
119119

github/deemru/w8io/169f3d6 
48.02 ms