tx · B9V4JoCMeMySF57VFfzmrqa7S7KZP1hFgrUWTAPPKCKw

3PAkmJniMgnnAej5pYf2jFYkCbZow5pt9tr:  -0.01000000 Waves

2023.08.19 16:20 [3783226] smart account 3PAkmJniMgnnAej5pYf2jFYkCbZow5pt9tr > SELF 0.00000000 Waves

{ "type": 13, "id": "B9V4JoCMeMySF57VFfzmrqa7S7KZP1hFgrUWTAPPKCKw", "fee": 1000000, "feeAssetId": null, "timestamp": 1692451244111, "version": 2, "chainId": 87, "sender": "3PAkmJniMgnnAej5pYf2jFYkCbZow5pt9tr", "senderPublicKey": "A5AvSRrbVauQKBhPtuWTLTQdE5ka4nVCSDaVANpFur26", "proofs": [ "3AkDwoDyEnH82iPL4aHZkEMjSJ8eVUHGkfy4vzqnbWDr1MiZHhLCmGyDXBgb1FuCYNvzze2jAu1fWtGrLZtZPmGT" ], "script": "base64:BgIMCAISABIAEgASABIAEAACZDgAgMLXLwAGcG9vbElkARoBV/VGaCeADWjfTiZ1erSh0ygx4Am/9Xl5NwAKcG9vbFN0cmluZwkA2AQBBQZwb29sSWQACm9wZXJhdGlvbnMBGgFXaf5JpoiQF3kA/S4y4DPK1SmQqNciQ0ftAA93aGlybHBvb2xQb29sSWQBBQV0o/bXAAl3aGlybHBvb2wBIFnjjdzCtSO6ShTcxNCvFAnmZOYEviUGCyZO5VBtl1nHAAV3YXZlcwEEE6vZMwAGc3dhdmVzASAIH8j3FjDtUcIpG+ysGo/8kHEcWTgt6yGBsDdB8EXRSgAJYnVybnh0bklkASAkT3V5an4zObj7DP+EqXFcXsot3jOgxF1p+epEEexMVAALd2F2ZXNpbnBvb2wJARFAZXh0ck5hdGl2ZSgxMDUwKQIJAQdBZGRyZXNzAQUGcG9vbElkCQCsAgIJAKwCAgIHZ2xvYmFsXwkA2AQBBQV3YXZlcwIIX2JhbGFuY2UADHByb2plY3RzdGFrZQkBEUBleHRyTmF0aXZlKDEwNTApAgkBB0FkZHJlc3MBBQZwb29sSWQJAKwCAgIjM1BBa21KbmlNZ25uQWVqNXBZZjJqRllrQ2Jab3c1cHQ5dHICDF9pbmRleFN0YWtlZAAKdG90YWxzdGFrZQkBEUBleHRyTmF0aXZlKDEwNTApAgkBB0FkZHJlc3MBBQZwb29sSWQCF2dsb2JhbF9wb29sVG9rZW5fYW1vdW50AAp0dmxpbndhdmVzCQBrAwkAaAIFC3dhdmVzaW5wb29sAAoFDHByb2plY3RzdGFrZQUKdG90YWxzdGFrZQAPd2hpcmxwb29sc3VwcGx5BAckbWF0Y2gwCQDsBwEFCXdoaXJscG9vbAMJAAECBQckbWF0Y2gwAgVBc3NldAQFYXNzZXQFByRtYXRjaDAIBQVhc3NldAhxdWFudGl0eQkAAgECEENhbid0IGZpbmQgYXNzZXQABXByaWNlAwkAZwIJAGQCCQBrAwkAZAIFCnR2bGlud2F2ZXMJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMCHHN1cnBsdXMgcmVjZWl2ZWQgaW4gd2F2ZWxldHMFAmQ4BQ93aGlybHBvb2xzdXBwbHkFAmQ4CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzAiFXSElSTFBPT0wgaXNzdWUgcHJpY2UgaW4gd2F2ZWxldHMJAGQCCQBrAwkAZAIFCnR2bGlud2F2ZXMJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMCHHN1cnBsdXMgcmVjZWl2ZWQgaW4gd2F2ZWxldHMFAmQ4BQ93aGlybHBvb2xzdXBwbHkFAmQ4CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzAiFXSElSTFBPT0wgaXNzdWUgcHJpY2UgaW4gd2F2ZWxldHMAD2JvbnVzcGVyY2VudGFnZQAKBQFpARVidXlXSElSTFBPT0x3aXRoV0FWRVMAAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIcYWNjZXNzIG9ubHkgYnkgcHJvamVjdCBvd25lcgQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEB3N1cnBsdXMJAGsDCQBlAgUFcHJpY2UFAmQ4CAUDcG10BmFtb3VudAUCZDgEBmFtb3VudAkAawMIBQNwbXQGYW1vdW50BQJkOAUFcHJpY2UEDHRvT3BlcmF0aW9ucwkAawMFBmFtb3VudAkAawMAGQUCZDgACQkAaAIAZAUCZDgEDHN1cHBseWFtb3VudAkAaQIJAGUCCQBlAggFA3BtdAZhbW91bnQFDHRvT3BlcmF0aW9ucwUHc3VycGx1cwACBBNzd2F2ZXNCYWxhbmNlQmVmb3JlCQDwBwIFBHRoaXMFBnN3YXZlcwMJAQIhPQIIBQNwbXQHYXNzZXRJZAUEdW5pdAkAAgECF2F0dGFjaCBXQVZFUyB0b2tlbiBvbmx5BBNTdXBwbHlXYXZlc01haW5Qb29sCQD8BwQJAQdBZGRyZXNzAQEaAVcglFxKrc/0SDk7iECzv9vujFCgp2rP2ugCBnN1cHBseQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQR1bml0BQxzdXBwbHlhbW91bnQFA25pbAMJAAACBRNTdXBwbHlXYXZlc01haW5Qb29sBRNTdXBwbHlXYXZlc01haW5Qb29sBBhTdXBwbHlXYXZlc1dhdmVzRGVmaVBvb2wJAPwHBAkBB0FkZHJlc3MBARoBVxkLO48/zcX1AFJDuOumjMisvxQ5MT4kvgIGc3VwcGx5BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBHVuaXQFDHN1cHBseWFtb3VudAUDbmlsAwkAAAIFGFN1cHBseVdhdmVzV2F2ZXNEZWZpUG9vbAUYU3VwcGx5V2F2ZXNXYXZlc0RlZmlQb29sBA1Td2F2ZXNEZXBvc2l0CQD8BwQJAQdBZGRyZXNzAQEaAVd9yXuTFHn/51HxsUrHb/lqHYCVR89YI34CB2RlcG9zaXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEdW5pdAUMdG9PcGVyYXRpb25zBQNuaWwDCQAAAgUNU3dhdmVzRGVwb3NpdAUNU3dhdmVzRGVwb3NpdAQSc3dhdmVzQmFsYW5jZUFmdGVyCQDwBwIFBHRoaXMFBnN3YXZlcwQQc3dhdmVzRGlmZmVyZW5jZQkAZQIFEnN3YXZlc0JhbGFuY2VBZnRlcgUTc3dhdmVzQmFsYW5jZUJlZm9yZQkAzAgCCQEHUmVpc3N1ZQMFCXdoaXJscG9vbAkAawMJAGQCBQZhbW91bnQJAGkCBQZhbW91bnQABAkAZAIAZAUPYm9udXNwZXJjZW50YWdlAGQGCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgkAawMFBmFtb3VudAkAZAIAZAUPYm9udXNwZXJjZW50YWdlAGQFCXdoaXJscG9vbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEFCm9wZXJhdGlvbnMJAGsDCQBpAgUGYW1vdW50AAQJAGQCAGQFD2JvbnVzcGVyY2VudGFnZQBkBQl3aGlybHBvb2wJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBBQpvcGVyYXRpb25zBRBzd2F2ZXNEaWZmZXJlbmNlBQZzd2F2ZXMJAMwIAgkBDEludGVnZXJFbnRyeQICIVdISVJMUE9PTCBpc3N1ZSBwcmljZSBpbiB3YXZlbGV0cwUFcHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQICInN1cnBsdXMgdHJlYXN1cnkgdmFsdWUgaW4gd2F2ZWxldHMFCnR2bGlud2F2ZXMJAMwIAgkBDEludGVnZXJFbnRyeQICFldISVJMUE9PTCB0b3RhbCBzdXBwbHkFD3doaXJscG9vbHN1cHBseQkAzAgCCQEMSW50ZWdlckVudHJ5AgIcc3VycGx1cyByZWNlaXZlZCBpbiB3YXZlbGV0cwkAZAIFB3N1cnBsdXMJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMCHHN1cnBsdXMgcmVjZWl2ZWQgaW4gd2F2ZWxldHMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARJQcmljZVN1cnBsdXNTdXBwbHkACQDMCAIJAQxJbnRlZ2VyRW50cnkCAg1XQVZFUyBpbiBwb29sBQt3YXZlc2lucG9vbAkAzAgCCQEMSW50ZWdlckVudHJ5AgIMcHJvamVjdHN0YWtlBQxwcm9qZWN0c3Rha2UJAMwIAgkBDEludGVnZXJFbnRyeQICCnRvdGFsc3Rha2UFCnRvdGFsc3Rha2UJAMwIAgkBDEludGVnZXJFbnRyeQICIVdISVJMUE9PTCBpc3N1ZSBwcmljZSBpbiB3YXZlbGV0cwUFcHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQICInN1cnBsdXMgdHJlYXN1cnkgdmFsdWUgaW4gd2F2ZWxldHMFCnR2bGlud2F2ZXMJAMwIAgkBDEludGVnZXJFbnRyeQICFldISVJMUE9PTCB0b3RhbCBzdXBwbHkFD3doaXJscG9vbHN1cHBseQkAzAgCCQEMSW50ZWdlckVudHJ5AgIcc3VycGx1cyByZWNlaXZlZCBpbiB3YXZlbGV0cwkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwIcc3VycGx1cyByZWNlaXZlZCBpbiB3YXZlbGV0cwUDbmlsAWkBC2RFbnRyeVJlc2V0AAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECHGFjY2VzcyBvbmx5IGJ5IHByb2plY3Qgb3duZXIJAMwIAgkBDEludGVnZXJFbnRyeQICIVdISVJMUE9PTCBpc3N1ZSBwcmljZSBpbiB3YXZlbGV0cwkAaAIAAQUCZDgJAMwIAgkBDEludGVnZXJFbnRyeQICInN1cnBsdXMgdHJlYXN1cnkgdmFsdWUgaW4gd2F2ZWxldHMAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgIWV0hJUkxQT09MIHRvdGFsIHN1cHBseQUPd2hpcmxwb29sc3VwcGx5CQDMCAIJAQxJbnRlZ2VyRW50cnkCAhxzdXJwbHVzIHJlY2VpdmVkIGluIHdhdmVsZXRzAAAFA25pbAFpARNQb29sT25lVG9rZW5TdXJwbHVzAAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECHGFjY2VzcyBvbmx5IGJ5IHByb2plY3Qgb3duZXIEDXN1cnBsdXNhbW91bnQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMCHHN1cnBsdXMgcmVjZWl2ZWQgaW4gd2F2ZWxldHMEE1Bvb2xPbmVUb2tlblN1cnBsdXMJAPwHBAkBB0FkZHJlc3MBARoBV/0lw71OYZRB77peEmOPxTlvSbWIOvXpbQIhZ2VuZXJhdGVJbmRleFdpdGhPbmVUb2tlbkFuZFN0YWtlCQDMCAIFCnBvb2xTdHJpbmcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEdW5pdAUNc3VycGx1c2Ftb3VudAUDbmlsAwkAAAIFE1Bvb2xPbmVUb2tlblN1cnBsdXMFE1Bvb2xPbmVUb2tlblN1cnBsdXMJAMwIAgkBDEludGVnZXJFbnRyeQICHHN1cnBsdXMgcmVjZWl2ZWQgaW4gd2F2ZWxldHMJAGUCCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzAhxzdXJwbHVzIHJlY2VpdmVkIGluIHdhdmVsZXRzBQ1zdXJwbHVzYW1vdW50BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEMQm9vc3RQb29sQVBZAAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECHGFjY2VzcyBvbmx5IGJ5IHByb2plY3Qgb3duZXIEE3N3YXZlc0JhbGFuY2VCZWZvcmUJAPAHAgUEdGhpcwUGc3dhdmVzBAtzd2FwYnVybnh0bgkA/AcECQEHQWRkcmVzcwEFBnBvb2xJZAIEc3dhcAkAzAgCAgV3YXZlcwkAzAgCAAAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUJYnVybnh0bklkCQDwBwIFBHRoaXMFCWJ1cm54dG5JZAUDbmlsAwkAAAIFC3N3YXBidXJueHRuBQtzd2FwYnVybnh0bgQNU3dhdmVzRGVwb3NpdAkA/AcECQEHQWRkcmVzcwEBGgFXfcl7kxR5/+dR8bFKx2/5ah2AlUfPWCN+AgdkZXBvc2l0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBHVuaXQDCQBmAgkAZQIICQDvBwEFBHRoaXMJYXZhaWxhYmxlBQJkOAAACQBlAggJAO8HAQUEdGhpcwlhdmFpbGFibGUFAmQ4AAAFA25pbAMJAAACBQ1Td2F2ZXNEZXBvc2l0BQ1Td2F2ZXNEZXBvc2l0BBJzd2F2ZXNCYWxhbmNlQWZ0ZXIJAPAHAgUEdGhpcwUGc3dhdmVzBBBzd2F2ZXNEaWZmZXJlbmNlCQBlAgUSc3dhdmVzQmFsYW5jZUFmdGVyBRNzd2F2ZXNCYWxhbmNlQmVmb3JlBAVib29zdAkA/AcECQEHQWRkcmVzcwEFD3doaXJscG9vbFBvb2xJZAILYWRkQm9vc3RpbmcJAMwIAgAHBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBnN3YXZlcwUQc3dhdmVzRGlmZmVyZW5jZQUDbmlsAwkAAAIFBWJvb3N0BQVib29zdAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAEB/8qM=", "height": 3783226, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9FdLX9QKguTGYescu9nDi56QCVQxXyrGGYnZCihv38tC Next: DFdGzFpWUp2x2rgcJaH4c2uPHZ1pX4ur9dkqj1bdTSiu Diff:
OldNewDifferences
99
1010 let operations = base58'3PBbLJcBjLWUZZrFFUk5s53TdTUneHXDc7e'
1111
12+let whirlpoolPoolId = base58'change'
13+
1214 let whirlpool = base58'73tY3E6Gd5AWYmsuq8m8Kek7KnJNAYyS3GoveTbc6jCi'
1315
1416 let waves = base58'WAVES'
17+
18+let swaves = base58'YiNbofFzC17jEHHCMwrRcpy9MrrjabMMLZxg8g5xmf7'
19+
20+let burnxtnId = base58'3SjxA2YLdfF9fTRbzLm9xFn27C6MW34W1YsdJ6Axefns'
1521
1622 let wavesinpool = getIntegerValue(Address(poolId), (("global_" + toBase58String(waves)) + "_balance"))
1723
3238 then (fraction((tvlinwaves + getIntegerValue(this, "surplus received in wavelets")), d8, whirlpoolsupply) + d8)
3339 else getIntegerValue(this, "WHIRLPOOL issue price in wavelets")
3440
41+let bonuspercentage = 10
42+
3543 @Callable(i)
36-func buyWHIRLPOOLwithWAVES () = {
37- let pmt = value(i.payments[0])
38- let surplus = fraction((price - d8), pmt.amount, d8)
39- let amount = fraction(pmt.amount, d8, price)
40- let toOperations = fraction(amount, fraction(25, d8, 9), (100 * d8))
41- let supplyamount = (((pmt.amount - toOperations) - surplus) / 4)
42- if ((pmt.assetId != unit))
43- then throw("attach WAVES token only")
44- else {
45- let SupplyWavesMainPool = invoke(Address(base58'3P4uA5etnZi4AmBabKinq2bMiWU8KcnHZdH'), "supply", nil, [AttachedPayment(unit, supplyamount)])
46- if ((SupplyWavesMainPool == SupplyWavesMainPool))
47- then {
48- let SupplyWavesWavesDefiPool = invoke(Address(base58'3P4DK5VzDwL3vfc5ahUEhtoe5ByZNyacJ3X'), "supply", nil, [AttachedPayment(unit, supplyamount)])
49- if ((SupplyWavesWavesDefiPool == SupplyWavesWavesDefiPool))
50- then {
51- let SupplyWavesNewWaves = invoke(Address(base58'3PHpuQUPVUoR3AYzFeJzeWJfYLsLTmWssVH'), "supply", nil, [AttachedPayment(unit, supplyamount)])
52- if ((SupplyWavesNewWaves == SupplyWavesNewWaves))
53- then {
54- let SupplyWavesViresV2 = invoke(Address(base58'3P9gtaWVnxA2TgFkvFMQSHPyfyNssjLGx5A'), "deposit", ["3PMYady7KzUNnRrFGzMBnq7akMDWiCQyoQz", true], [AttachedPayment(unit, supplyamount)])
55- if ((SupplyWavesViresV2 == SupplyWavesViresV2))
56- then [Reissue(whirlpool, (amount + (amount / 4)), true), ScriptTransfer(i.caller, amount, whirlpool), ScriptTransfer(Address(operations), (amount / 4), whirlpool), ScriptTransfer(Address(operations), toOperations, unit), IntegerEntry("WHIRLPOOL issue price in wavelets", price), IntegerEntry("surplus treasury value in wavelets", tvlinwaves), IntegerEntry("WHIRLPOOL total supply", whirlpoolsupply), IntegerEntry("surplus received in wavelets", (surplus + getIntegerValue(this, "surplus received in wavelets")))]
57- else throw("Strict value is not equal to itself.")
58- }
59- else throw("Strict value is not equal to itself.")
60- }
61- else throw("Strict value is not equal to itself.")
62- }
63- else throw("Strict value is not equal to itself.")
64- }
65- }
44+func buyWHIRLPOOLwithWAVES () = if ((i.caller != this))
45+ then throw("access only by project owner")
46+ else {
47+ let pmt = value(i.payments[0])
48+ let surplus = fraction((price - d8), pmt.amount, d8)
49+ let amount = fraction(pmt.amount, d8, price)
50+ let toOperations = fraction(amount, fraction(25, d8, 9), (100 * d8))
51+ let supplyamount = (((pmt.amount - toOperations) - surplus) / 2)
52+ let swavesBalanceBefore = assetBalance(this, swaves)
53+ if ((pmt.assetId != unit))
54+ then throw("attach WAVES token only")
55+ else {
56+ let SupplyWavesMainPool = invoke(Address(base58'3P4uA5etnZi4AmBabKinq2bMiWU8KcnHZdH'), "supply", nil, [AttachedPayment(unit, supplyamount)])
57+ if ((SupplyWavesMainPool == SupplyWavesMainPool))
58+ then {
59+ let SupplyWavesWavesDefiPool = invoke(Address(base58'3P4DK5VzDwL3vfc5ahUEhtoe5ByZNyacJ3X'), "supply", nil, [AttachedPayment(unit, supplyamount)])
60+ if ((SupplyWavesWavesDefiPool == SupplyWavesWavesDefiPool))
61+ then {
62+ let SwavesDeposit = invoke(Address(base58'3PDPzZVLhN1EuzGy4xAxjjTVkawKDLEaHiV'), "deposit", nil, [AttachedPayment(unit, toOperations)])
63+ if ((SwavesDeposit == SwavesDeposit))
64+ then {
65+ let swavesBalanceAfter = assetBalance(this, swaves)
66+ let swavesDifference = (swavesBalanceAfter - swavesBalanceBefore)
67+[Reissue(whirlpool, fraction((amount + (amount / 4)), (100 + bonuspercentage), 100), true), ScriptTransfer(i.caller, fraction(amount, (100 + bonuspercentage), 100), whirlpool), ScriptTransfer(Address(operations), fraction((amount / 4), (100 + bonuspercentage), 100), whirlpool), ScriptTransfer(Address(operations), swavesDifference, swaves), IntegerEntry("WHIRLPOOL issue price in wavelets", price), IntegerEntry("surplus treasury value in wavelets", tvlinwaves), IntegerEntry("WHIRLPOOL total supply", whirlpoolsupply), IntegerEntry("surplus received in wavelets", (surplus + getIntegerValue(this, "surplus received in wavelets")))]
68+ }
69+ else throw("Strict value is not equal to itself.")
70+ }
71+ else throw("Strict value is not equal to itself.")
72+ }
73+ else throw("Strict value is not equal to itself.")
74+ }
75+ }
6676
6777
6878
7282
7383
7484 @Callable(i)
75-func dEntry () = if ((i.caller != this))
85+func dEntryReset () = if ((i.caller != this))
7686 then throw("access only by project owner")
7787 else [IntegerEntry("WHIRLPOOL issue price in wavelets", (1 * d8)), IntegerEntry("surplus treasury value in wavelets", 0), IntegerEntry("WHIRLPOOL total supply", whirlpoolsupply), IntegerEntry("surplus received in wavelets", 0)]
7888
90100 }
91101
92102
103+
104+@Callable(i)
105+func BoostPoolAPY () = if ((i.caller != this))
106+ then throw("access only by project owner")
107+ else {
108+ let swavesBalanceBefore = assetBalance(this, swaves)
109+ let swapburnxtn = invoke(Address(poolId), "swap", ["waves", 0], [AttachedPayment(burnxtnId, assetBalance(this, burnxtnId))])
110+ if ((swapburnxtn == swapburnxtn))
111+ then {
112+ let SwavesDeposit = invoke(Address(base58'3PDPzZVLhN1EuzGy4xAxjjTVkawKDLEaHiV'), "deposit", nil, [AttachedPayment(unit, if (((wavesBalance(this).available - d8) > 0))
113+ then (wavesBalance(this).available - d8)
114+ else 0)])
115+ if ((SwavesDeposit == SwavesDeposit))
116+ then {
117+ let swavesBalanceAfter = assetBalance(this, swaves)
118+ let swavesDifference = (swavesBalanceAfter - swavesBalanceBefore)
119+ let boost = invoke(Address(whirlpoolPoolId), "addBoosting", [7], [AttachedPayment(swaves, swavesDifference)])
120+ if ((boost == boost))
121+ then nil
122+ else throw("Strict value is not equal to itself.")
123+ }
124+ else throw("Strict value is not equal to itself.")
125+ }
126+ else throw("Strict value is not equal to itself.")
127+ }
128+
129+
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let d8 = 100000000
55
66 let poolId = base58'3PQHndCUVrv3wBuQjbvVP9SnGmfbfitGxfx'
77
88 let poolString = toBase58String(poolId)
99
1010 let operations = base58'3PBbLJcBjLWUZZrFFUk5s53TdTUneHXDc7e'
1111
12+let whirlpoolPoolId = base58'change'
13+
1214 let whirlpool = base58'73tY3E6Gd5AWYmsuq8m8Kek7KnJNAYyS3GoveTbc6jCi'
1315
1416 let waves = base58'WAVES'
17+
18+let swaves = base58'YiNbofFzC17jEHHCMwrRcpy9MrrjabMMLZxg8g5xmf7'
19+
20+let burnxtnId = base58'3SjxA2YLdfF9fTRbzLm9xFn27C6MW34W1YsdJ6Axefns'
1521
1622 let wavesinpool = getIntegerValue(Address(poolId), (("global_" + toBase58String(waves)) + "_balance"))
1723
1824 let projectstake = getIntegerValue(Address(poolId), ("3PAkmJniMgnnAej5pYf2jFYkCbZow5pt9tr" + "_indexStaked"))
1925
2026 let totalstake = getIntegerValue(Address(poolId), "global_poolToken_amount")
2127
2228 let tvlinwaves = fraction((wavesinpool * 10), projectstake, totalstake)
2329
2430 let whirlpoolsupply = match assetInfo(whirlpool) {
2531 case asset: Asset =>
2632 asset.quantity
2733 case _ =>
2834 throw("Can't find asset")
2935 }
3036
3137 let price = if (((fraction((tvlinwaves + getIntegerValue(this, "surplus received in wavelets")), d8, whirlpoolsupply) + d8) >= getIntegerValue(this, "WHIRLPOOL issue price in wavelets")))
3238 then (fraction((tvlinwaves + getIntegerValue(this, "surplus received in wavelets")), d8, whirlpoolsupply) + d8)
3339 else getIntegerValue(this, "WHIRLPOOL issue price in wavelets")
3440
41+let bonuspercentage = 10
42+
3543 @Callable(i)
36-func buyWHIRLPOOLwithWAVES () = {
37- let pmt = value(i.payments[0])
38- let surplus = fraction((price - d8), pmt.amount, d8)
39- let amount = fraction(pmt.amount, d8, price)
40- let toOperations = fraction(amount, fraction(25, d8, 9), (100 * d8))
41- let supplyamount = (((pmt.amount - toOperations) - surplus) / 4)
42- if ((pmt.assetId != unit))
43- then throw("attach WAVES token only")
44- else {
45- let SupplyWavesMainPool = invoke(Address(base58'3P4uA5etnZi4AmBabKinq2bMiWU8KcnHZdH'), "supply", nil, [AttachedPayment(unit, supplyamount)])
46- if ((SupplyWavesMainPool == SupplyWavesMainPool))
47- then {
48- let SupplyWavesWavesDefiPool = invoke(Address(base58'3P4DK5VzDwL3vfc5ahUEhtoe5ByZNyacJ3X'), "supply", nil, [AttachedPayment(unit, supplyamount)])
49- if ((SupplyWavesWavesDefiPool == SupplyWavesWavesDefiPool))
50- then {
51- let SupplyWavesNewWaves = invoke(Address(base58'3PHpuQUPVUoR3AYzFeJzeWJfYLsLTmWssVH'), "supply", nil, [AttachedPayment(unit, supplyamount)])
52- if ((SupplyWavesNewWaves == SupplyWavesNewWaves))
53- then {
54- let SupplyWavesViresV2 = invoke(Address(base58'3P9gtaWVnxA2TgFkvFMQSHPyfyNssjLGx5A'), "deposit", ["3PMYady7KzUNnRrFGzMBnq7akMDWiCQyoQz", true], [AttachedPayment(unit, supplyamount)])
55- if ((SupplyWavesViresV2 == SupplyWavesViresV2))
56- then [Reissue(whirlpool, (amount + (amount / 4)), true), ScriptTransfer(i.caller, amount, whirlpool), ScriptTransfer(Address(operations), (amount / 4), whirlpool), ScriptTransfer(Address(operations), toOperations, unit), IntegerEntry("WHIRLPOOL issue price in wavelets", price), IntegerEntry("surplus treasury value in wavelets", tvlinwaves), IntegerEntry("WHIRLPOOL total supply", whirlpoolsupply), IntegerEntry("surplus received in wavelets", (surplus + getIntegerValue(this, "surplus received in wavelets")))]
57- else throw("Strict value is not equal to itself.")
58- }
59- else throw("Strict value is not equal to itself.")
60- }
61- else throw("Strict value is not equal to itself.")
62- }
63- else throw("Strict value is not equal to itself.")
64- }
65- }
44+func buyWHIRLPOOLwithWAVES () = if ((i.caller != this))
45+ then throw("access only by project owner")
46+ else {
47+ let pmt = value(i.payments[0])
48+ let surplus = fraction((price - d8), pmt.amount, d8)
49+ let amount = fraction(pmt.amount, d8, price)
50+ let toOperations = fraction(amount, fraction(25, d8, 9), (100 * d8))
51+ let supplyamount = (((pmt.amount - toOperations) - surplus) / 2)
52+ let swavesBalanceBefore = assetBalance(this, swaves)
53+ if ((pmt.assetId != unit))
54+ then throw("attach WAVES token only")
55+ else {
56+ let SupplyWavesMainPool = invoke(Address(base58'3P4uA5etnZi4AmBabKinq2bMiWU8KcnHZdH'), "supply", nil, [AttachedPayment(unit, supplyamount)])
57+ if ((SupplyWavesMainPool == SupplyWavesMainPool))
58+ then {
59+ let SupplyWavesWavesDefiPool = invoke(Address(base58'3P4DK5VzDwL3vfc5ahUEhtoe5ByZNyacJ3X'), "supply", nil, [AttachedPayment(unit, supplyamount)])
60+ if ((SupplyWavesWavesDefiPool == SupplyWavesWavesDefiPool))
61+ then {
62+ let SwavesDeposit = invoke(Address(base58'3PDPzZVLhN1EuzGy4xAxjjTVkawKDLEaHiV'), "deposit", nil, [AttachedPayment(unit, toOperations)])
63+ if ((SwavesDeposit == SwavesDeposit))
64+ then {
65+ let swavesBalanceAfter = assetBalance(this, swaves)
66+ let swavesDifference = (swavesBalanceAfter - swavesBalanceBefore)
67+[Reissue(whirlpool, fraction((amount + (amount / 4)), (100 + bonuspercentage), 100), true), ScriptTransfer(i.caller, fraction(amount, (100 + bonuspercentage), 100), whirlpool), ScriptTransfer(Address(operations), fraction((amount / 4), (100 + bonuspercentage), 100), whirlpool), ScriptTransfer(Address(operations), swavesDifference, swaves), IntegerEntry("WHIRLPOOL issue price in wavelets", price), IntegerEntry("surplus treasury value in wavelets", tvlinwaves), IntegerEntry("WHIRLPOOL total supply", whirlpoolsupply), IntegerEntry("surplus received in wavelets", (surplus + getIntegerValue(this, "surplus received in wavelets")))]
68+ }
69+ else throw("Strict value is not equal to itself.")
70+ }
71+ else throw("Strict value is not equal to itself.")
72+ }
73+ else throw("Strict value is not equal to itself.")
74+ }
75+ }
6676
6777
6878
6979 @Callable(i)
7080 func PriceSurplusSupply () = [IntegerEntry("WAVES in pool", wavesinpool), IntegerEntry("projectstake", projectstake), IntegerEntry("totalstake", totalstake), IntegerEntry("WHIRLPOOL issue price in wavelets", price), IntegerEntry("surplus treasury value in wavelets", tvlinwaves), IntegerEntry("WHIRLPOOL total supply", whirlpoolsupply), IntegerEntry("surplus received in wavelets", getIntegerValue(this, "surplus received in wavelets"))]
7181
7282
7383
7484 @Callable(i)
75-func dEntry () = if ((i.caller != this))
85+func dEntryReset () = if ((i.caller != this))
7686 then throw("access only by project owner")
7787 else [IntegerEntry("WHIRLPOOL issue price in wavelets", (1 * d8)), IntegerEntry("surplus treasury value in wavelets", 0), IntegerEntry("WHIRLPOOL total supply", whirlpoolsupply), IntegerEntry("surplus received in wavelets", 0)]
7888
7989
8090
8191 @Callable(i)
8292 func PoolOneTokenSurplus () = if ((i.caller != this))
8393 then throw("access only by project owner")
8494 else {
8595 let surplusamount = getIntegerValue(this, "surplus received in wavelets")
8696 let PoolOneTokenSurplus = invoke(Address(base58'3PR1Qvi9mHT35SwWEkLSqqE2L8thiPLdVWU'), "generateIndexWithOneTokenAndStake", [poolString], [AttachedPayment(unit, surplusamount)])
8797 if ((PoolOneTokenSurplus == PoolOneTokenSurplus))
8898 then [IntegerEntry("surplus received in wavelets", (getIntegerValue(this, "surplus received in wavelets") - surplusamount))]
8999 else throw("Strict value is not equal to itself.")
90100 }
91101
92102
103+
104+@Callable(i)
105+func BoostPoolAPY () = if ((i.caller != this))
106+ then throw("access only by project owner")
107+ else {
108+ let swavesBalanceBefore = assetBalance(this, swaves)
109+ let swapburnxtn = invoke(Address(poolId), "swap", ["waves", 0], [AttachedPayment(burnxtnId, assetBalance(this, burnxtnId))])
110+ if ((swapburnxtn == swapburnxtn))
111+ then {
112+ let SwavesDeposit = invoke(Address(base58'3PDPzZVLhN1EuzGy4xAxjjTVkawKDLEaHiV'), "deposit", nil, [AttachedPayment(unit, if (((wavesBalance(this).available - d8) > 0))
113+ then (wavesBalance(this).available - d8)
114+ else 0)])
115+ if ((SwavesDeposit == SwavesDeposit))
116+ then {
117+ let swavesBalanceAfter = assetBalance(this, swaves)
118+ let swavesDifference = (swavesBalanceAfter - swavesBalanceBefore)
119+ let boost = invoke(Address(whirlpoolPoolId), "addBoosting", [7], [AttachedPayment(swaves, swavesDifference)])
120+ if ((boost == boost))
121+ then nil
122+ else throw("Strict value is not equal to itself.")
123+ }
124+ else throw("Strict value is not equal to itself.")
125+ }
126+ else throw("Strict value is not equal to itself.")
127+ }
128+
129+

github/deemru/w8io/0e76f2f 
64.77 ms