tx · A7z21ZSA5cAFp6jqPhjphY4EW9PnDEBraifuj8uSqpvm

3N3Aq1GcHD8bZMGyVgyvaTHrBM7EySFtJ1H:  -0.00500000 Waves

2022.06.19 01:31 [2102414] smart account 3N3Aq1GcHD8bZMGyVgyvaTHrBM7EySFtJ1H > SELF 0.00000000 Waves

{ "type": 13, "id": "A7z21ZSA5cAFp6jqPhjphY4EW9PnDEBraifuj8uSqpvm", "fee": 500000, "feeAssetId": null, "timestamp": 1655591524345, "version": 2, "chainId": 84, "sender": "3N3Aq1GcHD8bZMGyVgyvaTHrBM7EySFtJ1H", "senderPublicKey": "69Rez9g3wdeHPiCsmjaaaK1GBhFjL79pxMPX9Fpk8S5e", "proofs": [ "naGz1wFdoRVeGLhR4P9rmGTpr4RSob7hRAU3iTEkhMojA2yTsDiyxQtwJdsDpZu7aMbfuGoEXewKd5tLRS2iD6V" ], "script": "base64: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AAAAAgkABEwAAAACAgAAAAolZCVkJWQlZCVkCQAETAAAAAIJAAGkAAAAAQUAAAAIbWluZWRBbXQJAARMAAAAAgkAAaQAAAABBQAAAA5iZW5lZmljaWFyeUFtdAkABEwAAAACCQABpAAAAAEFAAAAC3Byb3RvY29sQW10BQAAAANuaWwFAAAAA1NFUAEAAAARUmV3YXJkVG90YWxzRW50cnkAAAAEAAAABW1pbmVyAAAACG1pbmVkQW10AAAADmJlbmVmaWNpYXJ5QW10AAAAC3Byb3RvY29sQW10BAAAABRub2RlUmV3YXJkc1RvdGFsc0tFWQkBAAAAFGtleU5vZGVSZXdhcmRzVG90YWxzAAAAAQkABCUAAAABBQAAAAVtaW5lcgQAAAAQbm9kZVJld2FyZHNBcnJheQkABLUAAAACCQEAAAAMZ2V0U3RyT3JFbHNlAAAAAgUAAAAUbm9kZVJld2FyZHNUb3RhbHNLRVkJAQAAABBkYXRhUmV3YXJkVG90YWxzAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAADU0VQBAAAAAtuZXdNaW5lZEFtdAkAAGQAAAACCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAQbm9kZVJld2FyZHNBcnJheQAAAAAAAAAAAQUAAAAIbWluZWRBbXQEAAAAEW5ld0JlbmVmaWNpYXJ5QW10CQAAZAAAAAIJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABBub2RlUmV3YXJkc0FycmF5AAAAAAAAAAACBQAAAA5iZW5lZmljaWFyeUFtdAQAAAAObmV3UHJvdG9jb2xBbXQJAABkAAAAAgkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAEG5vZGVSZXdhcmRzQXJyYXkAAAAAAAAAAAMFAAAAC3Byb3RvY29sQW10CQEAAAALU3RyaW5nRW50cnkAAAACBQAAABRub2RlUmV3YXJkc1RvdGFsc0tFWQkBAAAAEGRhdGFSZXdhcmRUb3RhbHMAAAADBQAAAAtuZXdNaW5lZEFtdAUAAAARbmV3QmVuZWZpY2lhcnlBbXQFAAAADm5ld1Byb3RvY29sQW10AAAAAQAAAAFpAQAAABVkaXN0cmlidXRlTWluZXJSZXdhcmQAAAABAAAAFGJlbmlmaWNhcnlBZGRyZXNzU3RyAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAAIAAAABAgAAACBleGFjdCAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcggFAAAAAWkAAAAMb3JpZ2luQ2FsbGVyCQAAAgAAAAECAAAAImRhcHAgdG8gZGFwcCBjYWxscyBhcmUgbm90IGFsbG93ZWQEAAAAA3BtdAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAIbWluZWRBbXQIBQAAAANwbXQAAAAGYW1vdW50BAAAAApwbXRBc3NldElkCQEAAAALdmFsdWVPckVsc2UAAAACCAUAAAADcG10AAAAB2Fzc2V0SWQFAAAAB0FOT1RFSUQEAAAABmZlZUFtdAgFAAAAAWkAAAADZmVlBAAAAApmZWVBc3NldElkCQEAAAALdmFsdWVPckVsc2UAAAACCAUAAAABaQAAAApmZWVBc3NldElkBQAAAAdBTk9URUlEAwkBAAAAAiE9AAAAAgUAAAAKcG10QXNzZXRJZAUAAAAHQU5PVEVJRAkAAAIAAAABAgAAACFvbmx5IFdhdmVzIGNhbiBiZSB1c2VkIGluIHBheW1lbnQDCQEAAAACIT0AAAACBQAAAApmZWVBc3NldElkBQAAAAdBTk9URUlECQAAAgAAAAECAAAAHm9ubHkgV2F2ZXMgY2FuIGJlIHVzZWQgaW4gZmVlcwMJAQAAAAIhPQAAAAIFAAAABmZlZUFtdAkAAGkAAAACCQAAaAAAAAIAAAAAAAAAAAUFAAAABU1VTFQ4AAAAAAAAAAPoCQAAAgAAAAECAAAAIGZlZSBhbW91bnQgY291bGRuJ3QgZXhjZWVkIDAuMDA1BAAAAAxtaW5lckFkZHJlc3MIBQAAAAFpAAAABmNhbGxlcgQAAAARYmVuaWZpY2FyeUFkZHJlc3MJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAAFGJlbmlmaWNhcnlBZGRyZXNzU3RyBAAAAAxwcm90b2NvbFBhcnQFAAAAC1BST1RPUEFSVFg4BAAAAA5iZW5pZmljYXJ5UGFydAUAAAAJQkVOUEFSVFg4BAAAABBhdmFpbGFibGVCYWxhbmNlCQAAZQAAAAIICQAD7wAAAAEFAAAADG1pbmVyQWRkcmVzcwAAAAlhdmFpbGFibGUFAAAABmZlZUFtdAMJAQAAAAIhPQAAAAIFAAAAEGF2YWlsYWJsZUJhbGFuY2UAAAAAAAAAAAAJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAABGFsbCAJAAGkAAAAAQUAAAAQYXZhaWxhYmxlQmFsYW5jZQIAAABBIFdhdmVsZXRzIGZyb20gdGhlIE5vZGUgYmFsYW5jZSBtdXN0IGJlIGF0dGFjaGVkIGludG8gdGhlIHBheW1lbnQEAAAADWJlbmlmaWNhcnlBbXQJAABrAAAAAwUAAAAIbWluZWRBbXQFAAAADmJlbmlmaWNhcnlQYXJ0BQAAAAVNVUxUOAQAAAALcHJvdG9jb2xBbXQJAABlAAAAAgUAAAAIbWluZWRBbXQFAAAADWJlbmlmaWNhcnlBbXQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAARYmVuaWZpY2FyeUFkZHJlc3MFAAAADWJlbmlmaWNhcnlBbXQFAAAABHVuaXQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAJQU5PVEVBRERSBQAAAAtwcm90b2NvbEFtdAUAAAAEdW5pdAkABEwAAAACCQEAAAASUmV3YXJkSGlzdG9yeUVudHJ5AAAABQUAAAAMbWluZXJBZGRyZXNzCAUAAAABaQAAAA10cmFuc2FjdGlvbklkBQAAAAhtaW5lZEFtdAUAAAANYmVuaWZpY2FyeUFtdAUAAAALcHJvdG9jb2xBbXQJAARMAAAAAgkBAAAAEVJld2FyZFRvdGFsc0VudHJ5AAAABAUAAAAMbWluZXJBZGRyZXNzBQAAAAhtaW5lZEFtdAUAAAANYmVuaWZpY2FyeUFtdAUAAAALcHJvdG9jb2xBbXQFAAAAA25pbAAAAADB6I+h", "height": 2102414, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8LxQPwikXYEpssNg8rvzSgaPgFdsjXnjsy5kC9iPc492 Next: DWa4KnKpUWXYeqYHMYHAt9ZBDWt28JvraDQLJjjPt279 Diff:
OldNewDifferences
99
1010 let ANOTEID = fromBase58String(ANOTEIDSTR)
1111
12-let ANOTEADDR = "3N8EvpGmkantoqYAdiG4W7brYEJqzkQVRBA"
12+let ANOTEADDR = Address(toBytes("3N8EvpGmkantoqYAdiG4W7brYEJqzkQVRBA"))
1313
1414 let PROTOPARTX8 = 95000000
1515
7575 else if ((feeAmt != ((5 * MULT8) / 1000)))
7676 then throw("fee amount couldn't exceed 0.005")
7777 else {
78- let anoteAddress = getAddressOrFail(ANOTEADDR)
7978 let minerAddress = i.caller
8079 let benificaryAddress = addressFromStringValue(benificaryAddressStr)
8180 let protocolPart = PROTOPARTX8
8685 else {
8786 let benificaryAmt = fraction(minedAmt, benificaryPart, MULT8)
8887 let protocolAmt = (minedAmt - benificaryAmt)
89-[ScriptTransfer(benificaryAddress, benificaryAmt, unit), ScriptTransfer(anoteAddress, protocolAmt, unit), RewardHistoryEntry(minerAddress, i.transactionId, minedAmt, benificaryAmt, protocolAmt), RewardTotalsEntry(minerAddress, minedAmt, benificaryAmt, protocolAmt)]
88+[ScriptTransfer(benificaryAddress, benificaryAmt, unit), ScriptTransfer(ANOTEADDR, protocolAmt, unit), RewardHistoryEntry(minerAddress, i.transactionId, minedAmt, benificaryAmt, protocolAmt), RewardTotalsEntry(minerAddress, minedAmt, benificaryAmt, protocolAmt)]
9089 }
9190 }
9291 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let SEP = "__"
55
66 let MULT8 = 100000000
77
88 let ANOTEIDSTR = "WAVES"
99
1010 let ANOTEID = fromBase58String(ANOTEIDSTR)
1111
12-let ANOTEADDR = "3N8EvpGmkantoqYAdiG4W7brYEJqzkQVRBA"
12+let ANOTEADDR = Address(toBytes("3N8EvpGmkantoqYAdiG4W7brYEJqzkQVRBA"))
1313
1414 let PROTOPARTX8 = 95000000
1515
1616 let BENPARTX8 = 5000000
1717
1818 func getStrOrElse (key,defaultVal) = valueOrElse(getString(this, key), defaultVal)
1919
2020
2121 func getStringOrFail (key) = valueOrErrorMessage(getString(this, key), (("Mandatory this." + key) + " is not defined"))
2222
2323
2424 func getAddressOrFail (key) = valueOrErrorMessage(addressFromString(getStringOrFail(key)), (("Fail to convert this." + key) + " value into Address"))
2525
2626
2727 func validateAddressOrFail (addressStr) = {
2828 let address = valueOrErrorMessage(addressFromString(addressStr), ("fail to convert into address " + addressStr))
2929 if ((0 > wavesBalance(address).available))
3030 then throw()
3131 else addressStr
3232 }
3333
3434
3535 func keyNodeRewardsTotals (address) = ("%s%s__totals__" + address)
3636
3737
3838 func keyRewardHistory (nodeAddress,txId) = makeString(["%s%s%s", "history", toString(nodeAddress), toBase58String(txId)], SEP)
3939
4040
4141 func dataRewardHistory (anoteAmountTotal,beneficiaryAmt,protocolAmt) = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(anoteAmountTotal), toString(beneficiaryAmt), toString(protocolAmt)], SEP)
4242
4343
4444 func RewardHistoryEntry (nodeAddress,txId,minedAmt,beneficiaryAmt,protocolAmt) = StringEntry(keyRewardHistory(nodeAddress, txId), dataRewardHistory(minedAmt, beneficiaryAmt, protocolAmt))
4545
4646
4747 func dataRewardTotals (minedAmt,beneficiaryAmt,protocolAmt) = makeString(["%d%d%d%d%d", toString(minedAmt), toString(beneficiaryAmt), toString(protocolAmt)], SEP)
4848
4949
5050 func RewardTotalsEntry (miner,minedAmt,beneficiaryAmt,protocolAmt) = {
5151 let nodeRewardsTotalsKEY = keyNodeRewardsTotals(toString(miner))
5252 let nodeRewardsArray = split(getStrOrElse(nodeRewardsTotalsKEY, dataRewardTotals(0, 0, 0)), SEP)
5353 let newMinedAmt = (parseIntValue(nodeRewardsArray[1]) + minedAmt)
5454 let newBeneficiaryAmt = (parseIntValue(nodeRewardsArray[2]) + beneficiaryAmt)
5555 let newProtocolAmt = (parseIntValue(nodeRewardsArray[3]) + protocolAmt)
5656 StringEntry(nodeRewardsTotalsKEY, dataRewardTotals(newMinedAmt, newBeneficiaryAmt, newProtocolAmt))
5757 }
5858
5959
6060 @Callable(i)
6161 func distributeMinerReward (benificaryAddressStr) = if ((size(i.payments) != 1))
6262 then throw("exact 1 payment must be attached")
6363 else if ((i.caller != i.originCaller))
6464 then throw("dapp to dapp calls are not allowed")
6565 else {
6666 let pmt = i.payments[0]
6767 let minedAmt = pmt.amount
6868 let pmtAssetId = valueOrElse(pmt.assetId, ANOTEID)
6969 let feeAmt = i.fee
7070 let feeAssetId = valueOrElse(i.feeAssetId, ANOTEID)
7171 if ((pmtAssetId != ANOTEID))
7272 then throw("only Waves can be used in payment")
7373 else if ((feeAssetId != ANOTEID))
7474 then throw("only Waves can be used in fees")
7575 else if ((feeAmt != ((5 * MULT8) / 1000)))
7676 then throw("fee amount couldn't exceed 0.005")
7777 else {
78- let anoteAddress = getAddressOrFail(ANOTEADDR)
7978 let minerAddress = i.caller
8079 let benificaryAddress = addressFromStringValue(benificaryAddressStr)
8180 let protocolPart = PROTOPARTX8
8281 let benificaryPart = BENPARTX8
8382 let availableBalance = (wavesBalance(minerAddress).available - feeAmt)
8483 if ((availableBalance != 0))
8584 then throw((("all " + toString(availableBalance)) + " Wavelets from the Node balance must be attached into the payment"))
8685 else {
8786 let benificaryAmt = fraction(minedAmt, benificaryPart, MULT8)
8887 let protocolAmt = (minedAmt - benificaryAmt)
89-[ScriptTransfer(benificaryAddress, benificaryAmt, unit), ScriptTransfer(anoteAddress, protocolAmt, unit), RewardHistoryEntry(minerAddress, i.transactionId, minedAmt, benificaryAmt, protocolAmt), RewardTotalsEntry(minerAddress, minedAmt, benificaryAmt, protocolAmt)]
88+[ScriptTransfer(benificaryAddress, benificaryAmt, unit), ScriptTransfer(ANOTEADDR, protocolAmt, unit), RewardHistoryEntry(minerAddress, i.transactionId, minedAmt, benificaryAmt, protocolAmt), RewardTotalsEntry(minerAddress, minedAmt, benificaryAmt, protocolAmt)]
9089 }
9190 }
9291 }
9392
9493

github/deemru/w8io/169f3d6 
26.02 ms