usawa

Unnamed repository; edit this file 'description' to name the repository.
Info | Log | Files | Refs | Submodules | LICENSE

commit c57217a58a57f18fb8fb5b758615dee8a9b6ec62
parent b454c4ee09998b1eb7895a122bb5586951be787d
Author: lash <dev@holbrook.no>
Date:   Tue, 20 Jan 2026 09:45:59 +0000

Complete readme example, ensure entry parent in xml output

Diffstat:
Mdummy/README | 107+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------
Mdummy/usawa/entry.py | 6++++--
Mdummy/usawa/ledger.py | 5+++--
3 files changed, 95 insertions(+), 23 deletions(-)

diff --git a/dummy/README b/dummy/README @@ -75,7 +75,7 @@ Using the initial state of the ledger, the `add.py` tool can be used to interact `python usawa/runnable/add.py -i start.xml -o first.xml` -If correctly specified, this will store an entry in the `valkey` database, and output the new _truncated state_ of the ledger to `first.xml`. +If correctly specified, this will store an entry in the `valkey` database, and output the new _truncated state_ (digest and serial set to last added entry) of the ledger to `first.xml`. Another entry may be added using the new _truncated state_: @@ -104,8 +104,8 @@ Example output of the first command: ``` <?xml version="1.0"?> <ledger xmlns="http://usawa.defalsify.org/" version="1"> - <topic xmlns:ns="http://usawa.defalsify.org/">59e0bb093d185a9f8e677b1fb76f84d829709561ca03f3c1b53dd9cc275b26f106777ea96998a85803e6fd582173c0f631c626c2725126405e969ba0459c73ea</topic> - <generated xmlns:ns="http://usawa.defalsify.org/">2026-01-19T18:42:17Z</generated> + <topic xmlns:ns="http://usawa.defalsify.org/">24448167713e4f7d7e09fd06716b17ffcbd8bd10aa2ebbaac0a0902292993a86244acb9683c7dc45500daf1193a760b87de6fadd0f7b30c1a7b63ac06c555ca8</topic> + <generated xmlns:ns="http://usawa.defalsify.org/">2026-01-20T09:30:34Z</generated> <src xmlns:ns="http://usawa.defalsify.org/">defalsify.org</src> <units xmlns:ns="http://usawa.defalsify.org/" base="BTC"> <unit sym="BTC"> @@ -114,7 +114,6 @@ Example output of the first command: </unit> </units> <identity xmlns:ns="http://usawa.defalsify.org/" keyid="3b54648d60bb8a5b9e84fa0057f79b3a5996e511682e80176dc948dcbff5a4fc" didtype="usawa"/> - <identity xmlns:ns="http://usawa.defalsify.org/" keyid="3b54648d60bb8a5b9e84fa0057f79b3a5996e511682e80176dc948dcbff5a4fc" didtype="usawa"/> <incoming xmlns:ns="http://usawa.defalsify.org/" serial="0"> <real unit="BTC"> <asset>0</asset> @@ -125,48 +124,118 @@ Example output of the first command: <entry> <data> <parent>00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000</parent> - <ref>a844baa7-074d-4654-8513-a0510ead7f41</ref> + <ref>2ae1dae8-8071-4a40-983d-e25f80634d6b</ref> <serial>1</serial> - <date>2026-01-19</date> - <dateTimeRegistered>2026-01-19T18:41:37Z</dateTimeRegistered> - <description>aergiuaheorg</description> + <date>2026-01-20</date> + <dateTimeRegistered>2026-01-20T09:29:28Z</dateTimeRegistered> + <description>awergaergh</description> <debit type="expense"> <unit>BTC</unit> <account>general</account> - <amount>-1212500</amount> + <amount>-2346300</amount> </debit> <credit type="asset"> <unit>BTC</unit> <account>general</account> - <amount>1212500</amount> + <amount>2346300</amount> </credit> </data> - <sig type="ed25519" keyid="3b54648d60bb8a5b9e84fa0057f79b3a5996e511682e80176dc948dcbff5a4fc">6811b639e6679dee7e4e229ed1bc836eca6c0731556f47f6ce9c4829221fdbc2472949f968f60d16e51c56d781f0f168fbfcc12e2366b1cd29e793a611e48a0f</sig> + <sig type="ed25519" keyid="3b54648d60bb8a5b9e84fa0057f79b3a5996e511682e80176dc948dcbff5a4fc">0a0bec86152bd411dff6d7569778305f30bf52dd03c060992d8bfd1f3432fe27cf3acd17d8019a0e5e3fe0c038664c478b1576fed027f3902bb32b56b05fd708</sig> </entry> <entry> <data> - <parent>00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000</parent> - <ref>450956b1-99e3-4011-af32-3b88723ab233</ref> + <parent>50740013c78726ddd4fd199bbe21ad3eb3c50dcfd3540e12c5b52151a9b9f3a41346a22a2d1928dfc5749faac332a8c15ff2f545e8ff92b07aa037c39b1ba93e</parent> + <ref>182536c7-f2ce-4976-af2a-6b0d2cf10e0c</ref> + <serial>2</serial> + <date>2026-01-20</date> + <dateTimeRegistered>2026-01-20T09:29:40Z</dateTimeRegistered> + <description>wergagh</description> + <debit type="expense"> + <unit>BTC</unit> + <account>general</account> + <amount>-1251613262700</amount> + </debit> + <credit type="asset"> + <unit>BTC</unit> + <account>general</account> + <amount>1251613262700</amount> + </credit> + </data> + <sig type="ed25519" keyid="3b54648d60bb8a5b9e84fa0057f79b3a5996e511682e80176dc948dcbff5a4fc">603bf1bf05951f1c78e3ba9ab430e914f73f03b6570c15cb241695393e57eb178029ba1ff0f86afa5f29ea10ea49418825e387feb8d03f79280593e4598b1b0d</sig> + </entry> +</ledger> +``` + +Sample output of second command: + +``` +<?xml version="1.0"?> +<ledger xmlns="http://usawa.defalsify.org/" version="1"> + <topic xmlns:ns="http://usawa.defalsify.org/">24448167713e4f7d7e09fd06716b17ffcbd8bd10aa2ebbaac0a0902292993a86244acb9683c7dc45500daf1193a760b87de6fadd0f7b30c1a7b63ac06c555ca8</topic> + <generated xmlns:ns="http://usawa.defalsify.org/">2026-01-20T09:32:09Z</generated> + <src xmlns:ns="http://usawa.defalsify.org/">defalsify.org</src> + <units xmlns:ns="http://usawa.defalsify.org/" base="BTC"> + <unit sym="BTC"> + <precision>2</precision> + <exchange>1000000000</exchange> + </unit> + </units> + <identity xmlns:ns="http://usawa.defalsify.org/" keyid="3b54648d60bb8a5b9e84fa0057f79b3a5996e511682e80176dc948dcbff5a4fc" didtype="usawa"/> + <incoming xmlns:ns="http://usawa.defalsify.org/" serial="1"> + <real unit="BTC"> + <asset>2346300</asset> + <liability>0</liability> + </real> + <digest algo="sha512">50740013c78726ddd4fd199bbe21ad3eb3c50dcfd3540e12c5b52151a9b9f3a41346a22a2d1928dfc5749faac332a8c15ff2f545e8ff92b07aa037c39b1ba93e</digest> + </incoming> + <entry> + <data> + <parent>50740013c78726ddd4fd199bbe21ad3eb3c50dcfd3540e12c5b52151a9b9f3a41346a22a2d1928dfc5749faac332a8c15ff2f545e8ff92b07aa037c39b1ba93e</parent> + <ref>182536c7-f2ce-4976-af2a-6b0d2cf10e0c</ref> <serial>2</serial> - <date>2026-01-19</date> - <dateTimeRegistered>2026-01-19T18:41:57Z</dateTimeRegistered> - <description>eqriguheqighq3ghoq3hgqhrg</description> + <date>2026-01-20</date> + <dateTimeRegistered>2026-01-20T09:29:40Z</dateTimeRegistered> + <description>wergagh</description> <debit type="expense"> <unit>BTC</unit> <account>general</account> - <amount>-4968347600</amount> + <amount>-1251613262700</amount> </debit> <credit type="asset"> <unit>BTC</unit> <account>general</account> - <amount>4968347600</amount> + <amount>1251613262700</amount> </credit> </data> - <sig type="ed25519" keyid="3b54648d60bb8a5b9e84fa0057f79b3a5996e511682e80176dc948dcbff5a4fc">c8d728ecc17cc1ac0d11dd24f35025f133e3fd91be6037d35df056b9a6ab26e67b7028826069b3f99b37258176921c45f0b333d8e950e36a7e5f729994cbd60c</sig> + <sig type="ed25519" keyid="3b54648d60bb8a5b9e84fa0057f79b3a5996e511682e80176dc948dcbff5a4fc">603bf1bf05951f1c78e3ba9ab430e914f73f03b6570c15cb241695393e57eb178029ba1ff0f86afa5f29ea10ea49418825e387feb8d03f79280593e4598b1b0d</sig> </entry> </ledger> +``` + +Sample output of third command: ``` +<?xml version="1.0"?> +<ledger xmlns="http://usawa.defalsify.org/" version="1"> + <topic xmlns:ns="http://usawa.defalsify.org/">24448167713e4f7d7e09fd06716b17ffcbd8bd10aa2ebbaac0a0902292993a86244acb9683c7dc45500daf1193a760b87de6fadd0f7b30c1a7b63ac06c555ca8</topic> + <generated xmlns:ns="http://usawa.defalsify.org/">2026-01-20T09:34:49Z</generated> + <src xmlns:ns="http://usawa.defalsify.org/">defalsify.org</src> + <units xmlns:ns="http://usawa.defalsify.org/" base="BTC"> + <unit sym="BTC"> + <precision>2</precision> + <exchange>1000000000</exchange> + </unit> + </units> + <identity xmlns:ns="http://usawa.defalsify.org/" keyid="3b54648d60bb8a5b9e84fa0057f79b3a5996e511682e80176dc948dcbff5a4fc" didtype="usawa"/> + <incoming xmlns:ns="http://usawa.defalsify.org/" serial="2"> + <real unit="BTC"> + <asset>1251613262700</asset> + <liability>0</liability> + </real> + <digest algo="sha512">aaaf17ff1a5866b1e43746686cd3029a5d0a08178986b3eccd8f94ad6f5e3076160f8bfb67ba2ee8c0e68fcec6f8bf3f2da2e61ef96cd5c11c0cef8043dde4df</digest> + </incoming> +</ledger> +``` ## State of development diff --git a/dummy/usawa/entry.py b/dummy/usawa/entry.py @@ -268,7 +268,6 @@ class Entry: debit, credit, ] - logg.debug('serialize entry {}'.format(d)) return rencode.dumps(d) """Create an entry object from serialized data. @@ -298,6 +297,7 @@ class Entry: for v in dst_data: dst = EntryPart(v[0].decode('utf-8'), v[1].decode('utf-8'), v[2].decode('utf-8'), v[3]) o.add_part(dst) + logg.debug('deserialized entry {}'.format(o)) return o @@ -398,7 +398,6 @@ class Entry: wallet = DemoWallet(publickey=pubkey_bytes) # TODO: demo only takes into account single signature sig = v[1][0] - logg.debug('our sig {} {}'.format(pubkey_bytes.hex(), sig.hex())) entry = Entry.deserialize(v[2]) (z, b) = entry.sum() if not wallet.verify(z, sig): @@ -465,3 +464,6 @@ class Entry: tree.append(o) return tree + + def __str__(self): + return 'entry serial {} parent {}'.format(self.serial, self.parent.hex()) diff --git a/dummy/usawa/ledger.py b/dummy/usawa/ledger.py @@ -473,9 +473,10 @@ class Ledger: self.entries[entry.serial] = [] #entries = self.entries[entry.serial] self.serial = entry.serial - oldbase = self.base + #oldbase = self.base + oldsum = self.cur self.cur = entry.sum()[0] - entry.parent = oldbase + entry.parent = oldsum self.entries[entry.serial].append(entry) #self.running[entry.unit].apply_entry(entry) self.apply_entryparts(entry)