2022.07.05 20:32 [3192266] smart account 3PFHm5TYKw4vVzj4rW8s3Yso88aD73Dai1C > SELF 0.00000000 Waves

{ "type": 13, "id": "H4xbKFA1up88sUU4pCqCc9Ra22SEvAVdhqsnW1jVfsNb", "fee": 1000000, "feeAssetId": null, "timestamp": 1657042365559, "version": 1, "sender": "3PFHm5TYKw4vVzj4rW8s3Yso88aD73Dai1C", "senderPublicKey": "EGZr2MRyXu5ukMZP1QZQpcVQikDiWHfk8YDwD4pnHWXH", "proofs": [ "3QQwkxp625meeEUsbLYiV4x8JPHschLCZcxGxRauSsEvZmMZsDxLYfj7NxoYNiudg2NmNvyHwA9nwcqz9k4hNkci" ], "script": "base64:AAIFAAAAAAAAABIIAhIDCgEIEgMKAQgSBAoCCAEAAAAOAAAAAANidGMCAAAALDhMUVc4ZjdQNWQ1UFpNN0d0WkVCZ2FxUlBHU3pTM0RmUHVpWHJVUko0QUpTAAAAAANldGgCAAAALDQ3NGpUZVl4MnIyVmEzNTc5NHRDU2NBWFdKRzloVTJIY2d4ek1vd2FaVW51AAAAAAR1c2R0AgAAACwzNE45WWNFRVRMV245M3FZUTY0RXNQMXg4OXRTcnVKVTQ0UnJFTVNYWEVQSgAAAAAEdXNkYwIAAAAsNlh0SGpwWGJzOVJSSlAyU3I5R1V5VnF6QUNjYnk5VGtUaEhYbmpWQzVDREoAAAAABHVzZG4CAAAALERHMnhGa1BkRHdLVW9Ca3pHQWhRdExwU0d6ZlhMaUNZUEV6ZUtIMkFkMjRwAAAAAARldXJuAgAAACxEVWsyWVR4aFJvQXFNSkx1czRHMmIzZlI4aE1IVmg2ZWl5Rng1cjI5VlI2dAAAAAAFd2F2ZXMCAAAABVdBVkVTAAAAAAV2aXJlcwIAAAAsRFNiYmhMc1NUZURnNUxzaXVmazJBbmVoM0RqVnFKdVByMk05dVUxZ3d5NXAAAAAAA2RhaQIAAAAsOHpVWWJkQjhRNm1EaHBjWFl2NTJqaTh5Y2ZqNFNEWDRnSlhTN1lZM2RBNFIAAAAABGJ1c2QCAAAALDhETGlZWmpvM1VVYVJCVEhVN0F5b3FnNGlod2I2WUgxQWZYcnJoZGpRN0sxAAAAAAZvcmFjbGUJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVfDie6J0VNaFBRlO8j93/SEhv32EQCrlFgAAAAACWV1ck9yYWNsZQkBAAAAB0FkZHJlc3MAAAABAQAAABoBV0u6oXE63UA2IgEgsjTTyOjtmSXCPSGaSAAAAAAGZG9sbGFyAAAAAAAAD0JAAQAAAA1nZXRWaXJlc1ByaWNlAAAAAAQAAAAKc3dvcGZpUGFpcgkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQIAAAAjM1BKNDhQM3Ayd3ZXVWpnUWFRaVoyY0ZicjhxbXhNb2tCR2QEAAAAC2tleUJhbGFuY2VBAgAAAA9BX2Fzc2V0X2JhbGFuY2UEAAAAC2tleUJhbGFuY2VCAgAAAA9CX2Fzc2V0X2JhbGFuY2UEAAAACGJhbGFuY2VBCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAApzd29wZmlQYWlyBQAAAAtrZXlCYWxhbmNlQQQAAAAIYmFsYW5jZUIJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAACnN3b3BmaVBhaXIFAAAAC2tleUJhbGFuY2VCCQAAawAAAAMFAAAACGJhbGFuY2VCCQAAaAAAAAIAAAAAAAAAAGQFAAAABmRvbGxhcgUAAAAIYmFsYW5jZUEAAAADAAAAAWkBAAAABGluaXQAAAABAAAABmNvbmZpZwMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAEdGhpcwkAAAIAAAABAgAAABJvbmx5IHNlbGYgY2FuIGluaXQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAAGY29uZmlnBQAAAAZjb25maWcFAAAAA25pbAAAAAFpAQAAAAVwcmljZQAAAAEAAAAHdG9rZW5JZAQAAAAFcHJpY2UEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAAd0b2tlbklkAgAAAAlfb3ZlcnJpZGUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABcAUAAAAHJG1hdGNoMAUAAAABcAMJAAAAAAAAAgUAAAAHdG9rZW5JZAUAAAAEdXNkdAUAAAAGZG9sbGFyAwkAAAAAAAACBQAAAAd0b2tlbklkBQAAAAR1c2RjBQAAAAZkb2xsYXIDCQAAAAAAAAIFAAAAB3Rva2VuSWQFAAAABHVzZG4FAAAABmRvbGxhcgMJAAAAAAAAAgUAAAAHdG9rZW5JZAUAAAADZGFpBQAAAAZkb2xsYXIDCQAAAAAAAAIFAAAAB3Rva2VuSWQFAAAABGJ1c2QFAAAABmRvbGxhcgMJAAAAAAAAAgUAAAAHdG9rZW5JZAUAAAADYnRjCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAZvcmFjbGUCAAAAFSVzJXNfX3ByaWNlX19CVEMtVVNEVAMJAAAAAAAAAgUAAAAHdG9rZW5JZAUAAAADZXRoCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAZvcmFjbGUCAAAAFSVzJXNfX3ByaWNlX19FVEgtVVNEVAMJAAAAAAAAAgUAAAAHdG9rZW5JZAUAAAAFd2F2ZXMJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABm9yYWNsZQIAAAAXJXMlc19fcHJpY2VfX1dBVkVTLVVTRFQDCQAAAAAAAAIFAAAAB3Rva2VuSWQFAAAABGV1cm4JAABpAAAAAgkAAGgAAAACBQAAAAZkb2xsYXIFAAAABmRvbGxhcgkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAJZXVyT3JhY2xlAgAAABAlcyVzX19wcmljZV9fRVVSAwkAAAAAAAACBQAAAAd0b2tlbklkBQAAAAV2aXJlcwkBAAAADWdldFZpcmVzUHJpY2UAAAAACQAAAgAAAAECAAAADXVua25vd24gdG9rZW4JAAUUAAAAAgUAAAADbmlsBQAAAAVwcmljZQAAAAFpAQAAAA1vdmVycmlkZVByaWNlAAAAAgAAAAd0b2tlbklkAAAABXByaWNlBAAAAAZhZG1TdHIJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQmAAAAAQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAABHRoaXMCAAAABmNvbmZpZwIAAAAJbm8gY29uZmlnAgAAABJiYWQgY29uZmlnIGFkZHJlc3MCAAAABWFkbWluAgAAABJubyBhZG1pbiBpbiBjb25maWcDCQEAAAACIT0AAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAGYWRtU3RyCQAAAgAAAAECAAAAEW9ubHkgYWRtaW4gY2FuIGRvAwkAAAAAAAACBQAAAAVwcmljZQD//////////wkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAIFAAAAB3Rva2VuSWQCAAAACV9vdmVycmlkZQUAAAADbmlsCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAAB3Rva2VuSWQCAAAACV9vdmVycmlkZQUAAAAFcHJpY2UFAAAAA25pbAAAAADIHuMF", "chainId": 87, "height": 3192266, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DhowA7eiYpJ4EcusbnPXAiS4XZrjMxkrSr8qXMxkkWCt Next: F1ANSchE8F642kAZ3BLzrnvmsEtTjtzMPTmQyFF3zJPb Diff:
OldNewDifferences
1717
1818 let vires = "DSbbhLsSTeDg5Lsiufk2Aneh3DjVqJuPr2M9uU1gwy5p"
1919
20+let dai = "8zUYbdB8Q6mDhpcXYv52ji8ycfj4SDX4gJXS7YY3dA4R"
21+
22+let busd = "8DLiYZjo3UUaRBTHU7Ayoqg4ihwb6YH1AfXrrhdjQ7K1"
23+
2024 let oracle = Address(base58'3PKkojKdd6BBzTf1RXbQVfUDraNFXXHKzQF')
2125
2226 let eurOracle = Address(base58'3P8qJyxUqizCWWtEn2zsLZVPzZAjdNGppB1')
3438
3539
3640 @Callable(i)
37-func init () = if (isDefined(getString(this, "admin")))
38- then throw("already init")
39- else [StringEntry("admin", toString(i.caller))]
41+func init (config) = if ((i.caller != this))
42+ then throw("only self can init")
43+ else [StringEntry("config", config)]
4044
4145
4246
5256 then dollar
5357 else if ((tokenId == usdn))
5458 then dollar
55- else if ((tokenId == btc))
56- then getIntegerValue(oracle, "%s%s__price__BTC-USDT")
57- else if ((tokenId == eth))
58- then getIntegerValue(oracle, "%s%s__price__ETH-USDT")
59- else if ((tokenId == waves))
60- then getIntegerValue(oracle, "%s%s__price__WAVES-USDT")
61- else if ((tokenId == eurn))
62- then ((dollar * dollar) / getIntegerValue(eurOracle, "%s%s__price__EUR"))
63- else if ((tokenId == vires))
64- then getViresPrice()
65- else throw("unknown token")
59+ else if ((tokenId == dai))
60+ then dollar
61+ else if ((tokenId == busd))
62+ then dollar
63+ else if ((tokenId == btc))
64+ then getIntegerValue(oracle, "%s%s__price__BTC-USDT")
65+ else if ((tokenId == eth))
66+ then getIntegerValue(oracle, "%s%s__price__ETH-USDT")
67+ else if ((tokenId == waves))
68+ then getIntegerValue(oracle, "%s%s__price__WAVES-USDT")
69+ else if ((tokenId == eurn))
70+ then ((dollar * dollar) / getIntegerValue(eurOracle, "%s%s__price__EUR"))
71+ else if ((tokenId == vires))
72+ then getViresPrice()
73+ else throw("unknown token")
6674 }
6775 $Tuple2(nil, price)
6876 }
7179
7280 @Callable(i)
7381 func overridePrice (tokenId,price) = {
74- let adm = valueOrErrorMessage(getString(this, "admin"), "no admin conf")
75- if ((toString(i.caller) != adm))
82+ let admStr = valueOrErrorMessage(getString(valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, "config"), "no config")), "bad config address"), "admin"), "no admin in config")
83+ if ((toString(i.caller) != admStr))
7684 then throw("only admin can do")
7785 else if ((price == -1))
7886 then [DeleteEntry((tokenId + "_override"))]
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let btc = "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"
55
66 let eth = "474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu"
77
88 let usdt = "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ"
99
1010 let usdc = "6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ"
1111
1212 let usdn = "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p"
1313
1414 let eurn = "DUk2YTxhRoAqMJLus4G2b3fR8hMHVh6eiyFx5r29VR6t"
1515
1616 let waves = "WAVES"
1717
1818 let vires = "DSbbhLsSTeDg5Lsiufk2Aneh3DjVqJuPr2M9uU1gwy5p"
1919
20+let dai = "8zUYbdB8Q6mDhpcXYv52ji8ycfj4SDX4gJXS7YY3dA4R"
21+
22+let busd = "8DLiYZjo3UUaRBTHU7Ayoqg4ihwb6YH1AfXrrhdjQ7K1"
23+
2024 let oracle = Address(base58'3PKkojKdd6BBzTf1RXbQVfUDraNFXXHKzQF')
2125
2226 let eurOracle = Address(base58'3P8qJyxUqizCWWtEn2zsLZVPzZAjdNGppB1')
2327
2428 let dollar = 1000000
2529
2630 func getViresPrice () = {
2731 let swopfiPair = addressFromStringValue("3PJ48P3p2wvWUjgQaQiZ2cFbr8qmxMokBGd")
2832 let keyBalanceA = "A_asset_balance"
2933 let keyBalanceB = "B_asset_balance"
3034 let balanceA = getIntegerValue(swopfiPair, keyBalanceA)
3135 let balanceB = getIntegerValue(swopfiPair, keyBalanceB)
3236 fraction(balanceB, (100 * dollar), balanceA)
3337 }
3438
3539
3640 @Callable(i)
37-func init () = if (isDefined(getString(this, "admin")))
38- then throw("already init")
39- else [StringEntry("admin", toString(i.caller))]
41+func init (config) = if ((i.caller != this))
42+ then throw("only self can init")
43+ else [StringEntry("config", config)]
4044
4145
4246
4347 @Callable(i)
4448 func price (tokenId) = {
4549 let price = match getInteger(this, (tokenId + "_override")) {
4650 case p: Int =>
4751 p
4852 case _ =>
4953 if ((tokenId == usdt))
5054 then dollar
5155 else if ((tokenId == usdc))
5256 then dollar
5357 else if ((tokenId == usdn))
5458 then dollar
55- else if ((tokenId == btc))
56- then getIntegerValue(oracle, "%s%s__price__BTC-USDT")
57- else if ((tokenId == eth))
58- then getIntegerValue(oracle, "%s%s__price__ETH-USDT")
59- else if ((tokenId == waves))
60- then getIntegerValue(oracle, "%s%s__price__WAVES-USDT")
61- else if ((tokenId == eurn))
62- then ((dollar * dollar) / getIntegerValue(eurOracle, "%s%s__price__EUR"))
63- else if ((tokenId == vires))
64- then getViresPrice()
65- else throw("unknown token")
59+ else if ((tokenId == dai))
60+ then dollar
61+ else if ((tokenId == busd))
62+ then dollar
63+ else if ((tokenId == btc))
64+ then getIntegerValue(oracle, "%s%s__price__BTC-USDT")
65+ else if ((tokenId == eth))
66+ then getIntegerValue(oracle, "%s%s__price__ETH-USDT")
67+ else if ((tokenId == waves))
68+ then getIntegerValue(oracle, "%s%s__price__WAVES-USDT")
69+ else if ((tokenId == eurn))
70+ then ((dollar * dollar) / getIntegerValue(eurOracle, "%s%s__price__EUR"))
71+ else if ((tokenId == vires))
72+ then getViresPrice()
73+ else throw("unknown token")
6674 }
6775 $Tuple2(nil, price)
6876 }
6977
7078
7179
7280 @Callable(i)
7381 func overridePrice (tokenId,price) = {
74- let adm = valueOrErrorMessage(getString(this, "admin"), "no admin conf")
75- if ((toString(i.caller) != adm))
82+ let admStr = valueOrErrorMessage(getString(valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, "config"), "no config")), "bad config address"), "admin"), "no admin in config")
83+ if ((toString(i.caller) != admStr))
7684 then throw("only admin can do")
7785 else if ((price == -1))
7886 then [DeleteEntry((tokenId + "_override"))]
7987 else [IntegerEntry((tokenId + "_override"), price)]
8088 }
8189
8290

github/deemru/w8io/786bc32 
49.63 ms