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:
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)