Skip to content

Commit 44bbbf5

Browse files
committed
[WIP] Balance changes for MPTs
1 parent 5844517 commit 44bbbf5

6 files changed

Lines changed: 305 additions & 2 deletions

File tree

phpunit.xml.dist

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/10.2/phpunit.xsd" bootstrap="vendor/autoload.php" colors="true" stopOnFailure="true" failOnWarning="true" failOnRisky="true" failOnEmptyTestSuite="true" beStrictAboutOutputDuringTests="true" cacheDirectory=".phpunit.cache">
33
<testsuites>
44
<testsuite name="Test suite">
5-
<directory suffix="Test.php">./tests/Unit</directory>
6-
<directory suffix="Test.php">./tests/Feature</directory>
5+
6+
<directory suffix="BalanceChangesTest.php">./tests/Unit</directory>
7+
<!--<directory suffix="Test.php">./tests/Unit</directory>
8+
<directory suffix="Test.php">./tests/Feature</directory>-->
79
</testsuite>
810
</testsuites>
911
</phpunit>

src/Utilities/BalanceChanges.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,11 @@ public function __construct(\stdClass $metadata, bool $calculateTradingFees = fa
4040
$quantities[$trustlineQuantity[1]['account']][] = $trustlineQuantity[1]; //flipped
4141
}
4242
}
43+
44+
//if($node->LedgerEntryType == 'MPToken') {
45+
// $mptQuantity = $this->getMPTQuantity($node);
46+
// dd($node);
47+
//}
4348
}
4449
# Reorganize quantities array
4550
$final = [];
@@ -151,6 +156,12 @@ private function getTrustlineQuantity(\stdClass $node): ?array
151156
return [$result, $this->flipTrustlinePerspective($result)];
152157
}
153158

159+
//private function getMPTQuantity(\stdClass $node): ?array
160+
//{
161+
// $value = $this->computeBalanceChange($node);
162+
// dd($value);
163+
//}
164+
154165
private function computeBalanceChange(\stdClass $node): ?BigDecimal
155166
{
156167
$value = null;

tests/Unit/BalanceChangesTest.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -357,4 +357,15 @@ public function test_payment_issuer_tradingfee()
357357
"USD" => "0.000786512433092"
358358
],$result[2]['tradingfees']);
359359
}
360+
361+
/*public function test_mpt_payment1()
362+
{
363+
$tx = file_get_contents(__DIR__.'/../fixtures/utils/mptPayment1.json');
364+
$tx = \json_decode($tx);
365+
366+
$parser = new BalanceChanges($tx->result->meta,true);
367+
$result = $parser->result();
368+
369+
dd($result);
370+
}*/
360371
}
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
{
2+
"result": {
3+
"Account": "rGepNyxjJbtN75Zb4fgkjQsnv3UUcbp45E",
4+
"Amount": {
5+
"mpt_issuance_id": "0042AB9FAB8A5036CE4DB80D47016F557F9BFC9523985BF1",
6+
"value": "10000"
7+
},
8+
"Fee": "1",
9+
"Flags": 0,
10+
"Holder": "ra4qNsNJqY92MjEmSPmydz3XqsxQUfNg9k",
11+
"LastLedgerSequence": 4376127,
12+
"Sequence": 4369326,
13+
"SigningPubKey": "EDAE14F2183B3D70693BC26ED592084A9AF3B78FCA69CCAB589955DA67C659B639",
14+
"TransactionType": "Clawback",
15+
"TxnSignature": "6454E88374DB8487CD6A2C87203E71438FDFA352926087C0853CC1D29201946D9AF11A50C54134726BF5CE47545898A19F491C9AA2DB68E935C1C33989133B05",
16+
"ctid": "C042C62D00020002",
17+
"date": 805551062,
18+
"hash": "EF7B5D19C1546B4A7B682096DE2A9DEF3E17DB31B63478018D6BA51B8D5CC3C5",
19+
"inLedger": 4376109,
20+
"ledger_index": 4376109,
21+
"meta": {
22+
"AffectedNodes": [
23+
{
24+
"ModifiedNode": {
25+
"FinalFields": {
26+
"Account": "rGepNyxjJbtN75Zb4fgkjQsnv3UUcbp45E",
27+
"Balance": "99999983",
28+
"Flags": 0,
29+
"OwnerCount": 3,
30+
"Sequence": 4369327
31+
},
32+
"LedgerEntryType": "AccountRoot",
33+
"LedgerIndex": "01D98243EDA34CE985D14ACF00A58D2BFC08E1C00E5C5DAC080F345ADAE3C061",
34+
"PreviousFields": {
35+
"Balance": "99999984",
36+
"Sequence": 4369326
37+
},
38+
"PreviousTxnID": "732EE5C1222385C34F965EF0FC7C2CD3E952AAA6A4CF2CA2F35D43C4CD40DCF6",
39+
"PreviousTxnLgrSeq": 4375758
40+
}
41+
},
42+
{
43+
"ModifiedNode": {
44+
"FinalFields": {
45+
"Account": "ra4qNsNJqY92MjEmSPmydz3XqsxQUfNg9k",
46+
"Flags": 1,
47+
"MPTAmount": "579589",
48+
"MPTokenIssuanceID": "0042AB9FAB8A5036CE4DB80D47016F557F9BFC9523985BF1",
49+
"OwnerNode": "0"
50+
},
51+
"LedgerEntryType": "MPToken",
52+
"LedgerIndex": "CA899AED658D07A971E1AB5B13C9530BCBB3EBC925046CB532881B85C57955B8",
53+
"PreviousFields": {
54+
"MPTAmount": "589589"
55+
},
56+
"PreviousTxnID": "82075095E4C3BC6B8362CA6399402D1C741803C90C979C8325027A1B0B8DBC60",
57+
"PreviousTxnLgrSeq": 4370810
58+
}
59+
},
60+
{
61+
"ModifiedNode": {
62+
"FinalFields": {
63+
"AssetScale": 2,
64+
"Flags": 123,
65+
"Issuer": "rGepNyxjJbtN75Zb4fgkjQsnv3UUcbp45E",
66+
"MPTokenMetadata": "7B0A20202263757272656E6379223A2022524C455552222C0A2020226E616D65223A2022526970706C6520455552222C0A20202264657363223A20224120726567756C6174656420737461626C65636F696E2069737375656420627920526970706C652E222C0A20202269636F6E223A202268747470733A2F2F75706C6F61642E77696B696D656469612E6F72672F77696B6970656469612F636F6D6D6F6E732F7468756D622F352F35372F4575726F5F436F6E737472756374696F6E2E7376672F3131333570782D4575726F5F436F6E737472756374696F6E2E7376672E706E67222C0A20202261737365745F636C617373223A2022727761222C0A20202261737365745F737562636C617373223A2022737461626C65636F696E222C0A202022616363745F6E616D65223A2022526970706C65222C0A2020227765626C696E6B73223A205B0A202020207B0A2020202020202275726C223A202268747470733A2F2F726970706C652E636F6D2F222C0A2020202020202274797065223A202277656273697465222C0A202020202020227469746C65223A20224F6666696369616C2057656273697465220A202020207D2C0A202020207B0A2020202020202275726C223A202268747470733A2F2F7872706C2E6F72672F222C0A2020202020202274797065223A2022646F6373222C0A202020202020227469746C65223A20225852504C20446F63756D656E746174696F6E220A202020207D0A20205D0A7D",
67+
"MaximumAmount": "58900000",
68+
"OutstandingAmount": "1851289",
69+
"OwnerNode": "0",
70+
"Sequence": 4369311,
71+
"TransferFee": 589
72+
},
73+
"LedgerEntryType": "MPTokenIssuance",
74+
"LedgerIndex": "D9772F5822DFD3FF7AC7090BD85DBDB48C6230F2D92B3131006371B1FA40EE52",
75+
"PreviousFields": {
76+
"OutstandingAmount": "1861289"
77+
},
78+
"PreviousTxnID": "FE578FE441DF8C220A08C883A665D2417DB5E31EFE1790365F2DC352022C807B",
79+
"PreviousTxnLgrSeq": 4370819
80+
}
81+
}
82+
],
83+
"TransactionIndex": 2,
84+
"TransactionResult": "tesSUCCESS"
85+
},
86+
"status": "success",
87+
"validated": true
88+
}
89+
}
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
{
2+
"result": {
3+
"Account": "rGepNyxjJbtN75Zb4fgkjQsnv3UUcbp45E",
4+
"Amount": {
5+
"mpt_issuance_id": "0042AB9FAB8A5036CE4DB80D47016F557F9BFC9523985BF1",
6+
"value": "589589"
7+
},
8+
"DeliverMax": {
9+
"mpt_issuance_id": "0042AB9FAB8A5036CE4DB80D47016F557F9BFC9523985BF1",
10+
"value": "589589"
11+
},
12+
"Destination": "ra4qNsNJqY92MjEmSPmydz3XqsxQUfNg9k",
13+
"Fee": "1",
14+
"Flags": 0,
15+
"LastLedgerSequence": 4370642,
16+
"Sequence": 4369321,
17+
"SigningPubKey": "EDAE14F2183B3D70693BC26ED592084A9AF3B78FCA69CCAB589955DA67C659B639",
18+
"TransactionType": "Payment",
19+
"TxnSignature": "59DFFD6F6D9F5B971C350E2E0FF03B011604B273FE632D721B6334C13F7D6CA90529489C5CAC3B21E6EC7FD647F478889C61ABCC813B23A8965E5FC4B154750C",
20+
"ctid": "C042B0C000050002",
21+
"date": 805533142,
22+
"hash": "E12903FF0F9654F599ECAF65DCD5BF75C8AC8A1E8B88AFE7E44588A6DE532641",
23+
"inLedger": 4370624,
24+
"ledger_index": 4370624,
25+
"meta": {
26+
"AffectedNodes": [
27+
{
28+
"ModifiedNode": {
29+
"FinalFields": {
30+
"Account": "rGepNyxjJbtN75Zb4fgkjQsnv3UUcbp45E",
31+
"Balance": "99999988",
32+
"Flags": 0,
33+
"OwnerCount": 3,
34+
"Sequence": 4369322
35+
},
36+
"LedgerEntryType": "AccountRoot",
37+
"LedgerIndex": "01D98243EDA34CE985D14ACF00A58D2BFC08E1C00E5C5DAC080F345ADAE3C061",
38+
"PreviousFields": {
39+
"Balance": "99999989",
40+
"Sequence": 4369321
41+
},
42+
"PreviousTxnID": "5B76E79059DA94B0E56B5CE24960908DEA43EA02C5715701E1BAE1FDA1A71FCF",
43+
"PreviousTxnLgrSeq": 4370615
44+
}
45+
},
46+
{
47+
"ModifiedNode": {
48+
"FinalFields": {
49+
"Account": "ra4qNsNJqY92MjEmSPmydz3XqsxQUfNg9k",
50+
"Flags": 0,
51+
"MPTAmount": "589589",
52+
"MPTokenIssuanceID": "0042AB9FAB8A5036CE4DB80D47016F557F9BFC9523985BF1",
53+
"OwnerNode": "0"
54+
},
55+
"LedgerEntryType": "MPToken",
56+
"LedgerIndex": "CA899AED658D07A971E1AB5B13C9530BCBB3EBC925046CB532881B85C57955B8",
57+
"PreviousFields": {},
58+
"PreviousTxnID": "C77BCA2531CD2D9D3B1A2AB603021A2CC808E3A39743E446AE8035C883A58991",
59+
"PreviousTxnLgrSeq": 4370345
60+
}
61+
},
62+
{
63+
"ModifiedNode": {
64+
"FinalFields": {
65+
"AssetScale": 2,
66+
"Flags": 122,
67+
"Issuer": "rGepNyxjJbtN75Zb4fgkjQsnv3UUcbp45E",
68+
"MPTokenMetadata": "7B0A20202263757272656E6379223A2022524C455552222C0A2020226E616D65223A2022526970706C6520455552222C0A20202264657363223A20224120726567756C6174656420737461626C65636F696E2069737375656420627920526970706C652E222C0A20202269636F6E223A202268747470733A2F2F75706C6F61642E77696B696D656469612E6F72672F77696B6970656469612F636F6D6D6F6E732F7468756D622F352F35372F4575726F5F436F6E737472756374696F6E2E7376672F3131333570782D4575726F5F436F6E737472756374696F6E2E7376672E706E67222C0A20202261737365745F636C617373223A2022727761222C0A20202261737365745F737562636C617373223A2022737461626C65636F696E222C0A202022616363745F6E616D65223A2022526970706C65222C0A2020227765626C696E6B73223A205B0A202020207B0A2020202020202275726C223A202268747470733A2F2F726970706C652E636F6D2F222C0A2020202020202274797065223A202277656273697465222C0A202020202020227469746C65223A20224F6666696369616C2057656273697465220A202020207D2C0A202020207B0A2020202020202275726C223A202268747470733A2F2F7872706C2E6F72672F222C0A2020202020202274797065223A2022646F6373222C0A202020202020227469746C65223A20225852504C20446F63756D656E746174696F6E220A202020207D0A20205D0A7D",
69+
"MaximumAmount": "58900000",
70+
"OutstandingAmount": "1549389",
71+
"OwnerNode": "0",
72+
"Sequence": 4369311,
73+
"TransferFee": 589
74+
},
75+
"LedgerEntryType": "MPTokenIssuance",
76+
"LedgerIndex": "D9772F5822DFD3FF7AC7090BD85DBDB48C6230F2D92B3131006371B1FA40EE52",
77+
"PreviousFields": {
78+
"OutstandingAmount": "959800"
79+
},
80+
"PreviousTxnID": "5B76E79059DA94B0E56B5CE24960908DEA43EA02C5715701E1BAE1FDA1A71FCF",
81+
"PreviousTxnLgrSeq": 4370615
82+
}
83+
}
84+
],
85+
"TransactionIndex": 5,
86+
"TransactionResult": "tesSUCCESS",
87+
"delivered_amount": {
88+
"mpt_issuance_id": "0042AB9FAB8A5036CE4DB80D47016F557F9BFC9523985BF1",
89+
"value": "589589"
90+
}
91+
},
92+
"status": "success",
93+
"validated": true
94+
}
95+
}
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
{
2+
"result": {
3+
"Account": "rGepNyxjJbtN75Zb4fgkjQsnv3UUcbp45E",
4+
"Amount": {
5+
"mpt_issuance_id": "0042AB9EAB8A5036CE4DB80D47016F557F9BFC9523985BF1",
6+
"value": "58900"
7+
},
8+
"DeliverMax": {
9+
"mpt_issuance_id": "0042AB9EAB8A5036CE4DB80D47016F557F9BFC9523985BF1",
10+
"value": "58900"
11+
},
12+
"Destination": "ra4qNsNJqY92MjEmSPmydz3XqsxQUfNg9k",
13+
"Fee": "1",
14+
"Flags": 0,
15+
"LastLedgerSequence": 4370576,
16+
"Sequence": 4369314,
17+
"SigningPubKey": "EDAE14F2183B3D70693BC26ED592084A9AF3B78FCA69CCAB589955DA67C659B639",
18+
"TransactionType": "Payment",
19+
"TxnSignature": "34FD47D4E47CB689016CC6CE4E161BAB4B223515DE959DBDE081AA7494A6E6695A7FD33987C749EA626DD4FC15CA70D126AAB162B8C47F5390E67538F1179406",
20+
"ctid": "C042B07E00070002",
21+
"date": 805532920,
22+
"hash": "2ED3D0C7E9883FA1BA5674C6CA11E9B0300BD19CF5207CD78A32F0570732371F",
23+
"inLedger": 4370558,
24+
"ledger_index": 4370558,
25+
"meta": {
26+
"AffectedNodes": [
27+
{
28+
"ModifiedNode": {
29+
"FinalFields": {
30+
"Account": "rGepNyxjJbtN75Zb4fgkjQsnv3UUcbp45E",
31+
"Balance": "99999995",
32+
"Flags": 0,
33+
"OwnerCount": 3,
34+
"Sequence": 4369315
35+
},
36+
"LedgerEntryType": "AccountRoot",
37+
"LedgerIndex": "01D98243EDA34CE985D14ACF00A58D2BFC08E1C00E5C5DAC080F345ADAE3C061",
38+
"PreviousFields": {
39+
"Balance": "99999996",
40+
"Sequence": 4369314
41+
},
42+
"PreviousTxnID": "3D5AC7207D7B3F38E099ADAC125D48097C7F886C2EF6D449471FE3044F574896",
43+
"PreviousTxnLgrSeq": 4370549
44+
}
45+
},
46+
{
47+
"ModifiedNode": {
48+
"FinalFields": {
49+
"Account": "ra4qNsNJqY92MjEmSPmydz3XqsxQUfNg9k",
50+
"Flags": 0,
51+
"MPTAmount": "58900",
52+
"MPTokenIssuanceID": "0042AB9EAB8A5036CE4DB80D47016F557F9BFC9523985BF1",
53+
"OwnerNode": "0"
54+
},
55+
"LedgerEntryType": "MPToken",
56+
"LedgerIndex": "57104D6818227E55F5FDCD2B3EED2B3956A3A4940CCF4A82E6F218F33556C50E",
57+
"PreviousFields": {},
58+
"PreviousTxnID": "0BBA031469C6ADBAA9015639A3F8F961B3D481F4FD944285F5515A1EA68927BA",
59+
"PreviousTxnLgrSeq": 4370338
60+
}
61+
},
62+
{
63+
"ModifiedNode": {
64+
"FinalFields": {
65+
"AssetScale": 2,
66+
"Flags": 122,
67+
"Issuer": "rGepNyxjJbtN75Zb4fgkjQsnv3UUcbp45E",
68+
"MPTokenMetadata": "7B0A20202263757272656E6379223A2022524C555344222C0A2020226E616D65223A2022526970706C6520555344222C0A20202264657363223A20224120726567756C6174656420737461626C65636F696E2069737375656420627920526970706C652E222C0A20202269636F6E223A202268747470733A2F2F726970706C652E636F6D2F6173736574732F726C7573642D6C6F676F2E706E67222C0A20202261737365745F636C617373223A2022727761222C0A20202261737365745F737562636C617373223A2022737461626C65636F696E222C0A202022616363745F6E616D65223A2022526970706C65222C0A2020227765626C696E6B73223A205B0A202020207B0A2020202020202275726C223A202268747470733A2F2F726970706C652E636F6D2F222C0A2020202020202274797065223A202277656273697465222C0A202020202020227469746C65223A20224F6666696369616C2057656273697465220A202020207D2C0A202020207B0A2020202020202275726C223A202268747470733A2F2F7872706C2E6F72672F222C0A2020202020202274797065223A2022646F6373222C0A202020202020227469746C65223A20225852504C20446F63756D656E746174696F6E220A202020207D0A20205D0A7D",
69+
"MaximumAmount": "58900000000",
70+
"OutstandingAmount": "158900",
71+
"OwnerNode": "0",
72+
"Sequence": 4369310,
73+
"TransferFee": 589
74+
},
75+
"LedgerEntryType": "MPTokenIssuance",
76+
"LedgerIndex": "F817E1402260C0071CB61DEC67CE55928AD0B76841C882294A7A7FE5F0B18820",
77+
"PreviousFields": {
78+
"OutstandingAmount": "100000"
79+
},
80+
"PreviousTxnID": "3D5AC7207D7B3F38E099ADAC125D48097C7F886C2EF6D449471FE3044F574896",
81+
"PreviousTxnLgrSeq": 4370549
82+
}
83+
}
84+
],
85+
"TransactionIndex": 7,
86+
"TransactionResult": "tesSUCCESS",
87+
"delivered_amount": {
88+
"mpt_issuance_id": "0042AB9EAB8A5036CE4DB80D47016F557F9BFC9523985BF1",
89+
"value": "58900"
90+
}
91+
},
92+
"status": "success",
93+
"validated": true
94+
}
95+
}

0 commit comments

Comments
 (0)