]> git.codecow.com Git - libnemo.git/commitdiff
Change block previous property to bytes.
authorChris Duncan <chris@zoso.dev>
Fri, 8 Aug 2025 19:23:15 +0000 (12:23 -0700)
committerChris Duncan <chris@zoso.dev>
Fri, 8 Aug 2025 19:23:15 +0000 (12:23 -0700)
src/lib/block.ts
src/lib/ledger.ts

index 32ce1c34a5e6f71bcf5fc3d3b8b1abff50b6f42b..e8a3e38aac4ff8289d825de44c6c9697e90bcd25 100644 (file)
@@ -66,7 +66,7 @@ export class Block {
        subtype?: 'send' | 'receive' | 'change'
        account: Account
        balance: bigint
-       previous: string
+       previous: Uint8Array<ArrayBuffer>
        representative?: Account
        link?: Uint8Array<ArrayBuffer>
        signature?: string
@@ -108,7 +108,7 @@ export class Block {
                        }
                        this.account = account
                        this.balance = convert(balance, 'raw', 'raw', 'bigint')
-                       this.previous = previous
+                       this.previous = hex.toBytes(previous, 32)
                        if (representative instanceof Account) {
                                this.representative = representative
                        }
@@ -135,7 +135,7 @@ export class Block {
                        const data = [
                                PREAMBLE,
                                this.account.publicKey,
-                               this.previous.padStart(64, '0'),
+                               this.previous,
                                this.representative.publicKey,
                                dec.toHex(this.balance, 32),
                                this.link
@@ -173,7 +173,7 @@ export class Block {
                        return {
                                "type": "state",
                                "account": this.account.address,
-                               "previous": this.previous,
+                               "previous": bytes.toHex(this.previous),
                                "representative": this.representative.address ?? '',
                                "balance": this.balance.toString(),
                                "link": bytes.toHex(this.link),
@@ -230,7 +230,7 @@ export class Block {
                const difficulty: bigint = (this.subtype === 'send' || this.subtype === 'change')
                        ? DIFFICULTY_SEND
                        : DIFFICULTY_RECEIVE
-               const hash = +this.previous === 0 ? this.account.publicKey : this.previous
+               const hash = this.previous.every(b => b === 0) ? this.account.publicKey : bytes.toHex(this.previous)
                if (work == null) {
                        const result = await NanoPow.work_generate(hash, { difficulty })
                        if ('error' in result) {
index babb9bdc836101a88f3881df548810d4c595b264..9834c35c54ea662f7dd0257d041e7367b5e9d826 100644 (file)
@@ -488,7 +488,7 @@ export class Ledger extends Wallet {
                const purpose = dec.toBytes(BIP44_PURPOSE + HARDENED_OFFSET, 4)\r
                const coin = dec.toBytes(BIP44_COIN_NANO + HARDENED_OFFSET, 4)\r
                const account = dec.toBytes(index + HARDENED_OFFSET, 4)\r
-               const previous = hex.toBytes(block.previous === block.account.publicKey ? '0' : block.previous, 32)\r
+               const previous = block.previous\r
                const link = block.link\r
                const representative = hex.toBytes(block.representative.publicKey, 32)\r
                const balance = hex.toBytes(block.balance.toString(16), 16)\r
@@ -524,7 +524,7 @@ export class Ledger extends Wallet {
                }\r
 \r
                const account = dec.toBytes(index + HARDENED_OFFSET, 4)\r
-               const previous = hex.toBytes(block.previous, 32)\r
+               const previous = block.previous\r
                const link = block.link\r
                const representative = hex.toBytes(block.representative.publicKey, 32)\r
                const balance = hex.toBytes(BigInt(block.balance).toString(16), 16)\r