Home / Blink Labs / plutigo
Mar 10, 9-10 PM (0)
Mar 10, 10-11 PM (1)
Mar 10, 11-12 AM (0)
Mar 11, 12-1 AM (1)
Mar 11, 1-2 AM (0)
Mar 11, 2-3 AM (0)
Mar 11, 3-4 AM (0)
Mar 11, 4-5 AM (0)
Mar 11, 5-6 AM (0)
Mar 11, 6-7 AM (0)
Mar 11, 7-8 AM (0)
Mar 11, 8-9 AM (0)
Mar 11, 9-10 AM (0)
Mar 11, 10-11 AM (0)
Mar 11, 11-12 PM (0)
Mar 11, 12-1 PM (1)
Mar 11, 1-2 PM (0)
Mar 11, 2-3 PM (1)
Mar 11, 3-4 PM (0)
Mar 11, 4-5 PM (1)
Mar 11, 5-6 PM (0)
Mar 11, 6-7 PM (0)
Mar 11, 7-8 PM (0)
Mar 11, 8-9 PM (0)
Mar 11, 9-10 PM (0)
Mar 11, 10-11 PM (0)
Mar 11, 11-12 AM (0)
Mar 12, 12-1 AM (0)
Mar 12, 1-2 AM (1)
Mar 12, 2-3 AM (0)
Mar 12, 3-4 AM (0)
Mar 12, 4-5 AM (0)
Mar 12, 5-6 AM (0)
Mar 12, 6-7 AM (0)
Mar 12, 7-8 AM (0)
Mar 12, 8-9 AM (0)
Mar 12, 9-10 AM (0)
Mar 12, 10-11 AM (0)
Mar 12, 11-12 PM (0)
Mar 12, 12-1 PM (0)
Mar 12, 1-2 PM (0)
Mar 12, 2-3 PM (0)
Mar 12, 3-4 PM (0)
Mar 12, 4-5 PM (0)
Mar 12, 5-6 PM (0)
Mar 12, 6-7 PM (0)
Mar 12, 7-8 PM (0)
Mar 12, 8-9 PM (0)
Mar 12, 9-10 PM (0)
Mar 12, 10-11 PM (1)
Mar 12, 11-12 AM (0)
Mar 13, 12-1 AM (0)
Mar 13, 1-2 AM (0)
Mar 13, 2-3 AM (0)
Mar 13, 3-4 AM (0)
Mar 13, 4-5 AM (0)
Mar 13, 5-6 AM (0)
Mar 13, 6-7 AM (0)
Mar 13, 7-8 AM (0)
Mar 13, 8-9 AM (0)
Mar 13, 9-10 AM (0)
Mar 13, 10-11 AM (0)
Mar 13, 11-12 PM (0)
Mar 13, 12-1 PM (0)
Mar 13, 1-2 PM (0)
Mar 13, 2-3 PM (0)
Mar 13, 3-4 PM (1)
Mar 13, 4-5 PM (0)
Mar 13, 5-6 PM (0)
Mar 13, 6-7 PM (0)
Mar 13, 7-8 PM (0)
Mar 13, 8-9 PM (0)
Mar 13, 9-10 PM (0)
Mar 13, 10-11 PM (0)
Mar 13, 11-12 AM (0)
Mar 14, 12-1 AM (0)
Mar 14, 1-2 AM (0)
Mar 14, 2-3 AM (0)
Mar 14, 3-4 AM (0)
Mar 14, 4-5 AM (0)
Mar 14, 5-6 AM (0)
Mar 14, 6-7 AM (0)
Mar 14, 7-8 AM (0)
Mar 14, 8-9 AM (0)
Mar 14, 9-10 AM (0)
Mar 14, 10-11 AM (0)
Mar 14, 11-12 PM (0)
Mar 14, 12-1 PM (0)
Mar 14, 1-2 PM (6)
Mar 14, 2-3 PM (0)
Mar 14, 3-4 PM (0)
Mar 14, 4-5 PM (0)
Mar 14, 5-6 PM (0)
Mar 14, 6-7 PM (0)
Mar 14, 7-8 PM (0)
Mar 14, 8-9 PM (0)
Mar 14, 9-10 PM (0)
Mar 14, 10-11 PM (0)
Mar 14, 11-12 AM (0)
Mar 15, 12-1 AM (0)
Mar 15, 1-2 AM (1)
Mar 15, 2-3 AM (0)
Mar 15, 3-4 AM (0)
Mar 15, 4-5 AM (0)
Mar 15, 5-6 AM (0)
Mar 15, 6-7 AM (0)
Mar 15, 7-8 AM (0)
Mar 15, 8-9 AM (0)
Mar 15, 9-10 AM (1)
Mar 15, 10-11 AM (0)
Mar 15, 11-12 PM (0)
Mar 15, 12-1 PM (0)
Mar 15, 1-2 PM (0)
Mar 15, 2-3 PM (1)
Mar 15, 3-4 PM (0)
Mar 15, 4-5 PM (0)
Mar 15, 5-6 PM (1)
Mar 15, 6-7 PM (0)
Mar 15, 7-8 PM (0)
Mar 15, 8-9 PM (0)
Mar 15, 9-10 PM (0)
Mar 15, 10-11 PM (0)
Mar 15, 11-12 AM (0)
Mar 16, 12-1 AM (2)
Mar 16, 1-2 AM (2)
Mar 16, 2-3 AM (0)
Mar 16, 3-4 AM (0)
Mar 16, 4-5 AM (0)
Mar 16, 5-6 AM (0)
Mar 16, 6-7 AM (0)
Mar 16, 7-8 AM (0)
Mar 16, 8-9 AM (0)
Mar 16, 9-10 AM (0)
Mar 16, 10-11 AM (0)
Mar 16, 11-12 PM (2)
Mar 16, 12-1 PM (5)
Mar 16, 1-2 PM (7)
Mar 16, 2-3 PM (0)
Mar 16, 3-4 PM (1)
Mar 16, 4-5 PM (0)
Mar 16, 5-6 PM (0)
Mar 16, 6-7 PM (0)
Mar 16, 7-8 PM (0)
Mar 16, 8-9 PM (0)
Mar 16, 9-10 PM (0)
Mar 16, 10-11 PM (0)
Mar 16, 11-12 AM (0)
Mar 17, 12-1 AM (0)
Mar 17, 1-2 AM (0)
Mar 17, 2-3 AM (0)
Mar 17, 3-4 AM (0)
Mar 17, 4-5 AM (0)
Mar 17, 5-6 AM (0)
Mar 17, 6-7 AM (0)
Mar 17, 7-8 AM (1)
Mar 17, 8-9 AM (0)
Mar 17, 9-10 AM (0)
Mar 17, 10-11 AM (0)
Mar 17, 11-12 PM (0)
Mar 17, 12-1 PM (0)
Mar 17, 1-2 PM (0)
Mar 17, 2-3 PM (0)
Mar 17, 3-4 PM (0)
Mar 17, 4-5 PM (0)
Mar 17, 5-6 PM (0)
Mar 17, 6-7 PM (0)
Mar 17, 7-8 PM (0)
Mar 17, 8-9 PM (0)
Mar 17, 9-10 PM (0)
38 commits this week Mar 10, 2026 - Mar 17, 2026
fix(syn): correct flat encoder to produce identical roundtrip bytes
The flat encoder had two bugs that caused Encode(Decode(bytes)) to
produce different bytes than the original input. This broke script hash
derivation when applying parameters to compiled Plutus scripts in Go,
since the re-encoded bytes differed from what reference implementations
(Blaze SDK, Aiken) produce.

Bug 1: bits() used direct byte manipulation for multi-bit writes (3+
bits) that packed bits incorrectly across byte boundaries. Replaced with
a simple MSB-to-LSB loop delegating to one()/zero(), matching the
reference flat encoder's pushBits() approach.

Bug 2: encodeConstantType() for TList and TPair was missing the
list-continuation marker bits (one()) before each type tag. The decoder
reads constant type tags via DecodeList, which expects a 1-bit before
each tag entry, but the encoder wrote raw tags without these delimiters.

Added a roundtrip test using a synthetic UPLC program that exercises all
term types (Lambda, Apply, Var, Constant, Force, Delay, Builtin, Constr,
Case, Error) and constant types (Integer, ByteString, Bool, Data).

Signed-off-by: Pascal Grange <[email protected]>
fix(syn): correct flat encoder to produce identical roundtrip bytes
The flat encoder had two bugs that caused Encode(Decode(bytes)) to
produce different bytes than the original input. This broke script hash
derivation when applying parameters to compiled Plutus scripts in Go,
since the re-encoded bytes differed from what reference implementations
(Blaze SDK, Aiken) produce.

Bug 1: bits() used direct byte manipulation for multi-bit writes (3+
bits) that packed bits incorrectly across byte boundaries. Replaced with
a simple MSB-to-LSB loop delegating to one()/zero(), matching the
reference flat encoder's pushBits() approach.

Bug 2: encodeConstantType() for TList and TPair was missing the
list-continuation marker bits (one()) before each type tag. The decoder
reads constant type tags via DecodeList, which expects a 1-bit before
each tag entry, but the encoder wrote raw tags without these delimiters.

Added a roundtrip test using a synthetic UPLC program that exercises all
term types (Lambda, Apply, Var, Constant, Force, Delay, Builtin, Constr,
Case, Error) and constant types (Integer, ByteString, Bool, Data).

Signed-off-by: Pascal Grange <[email protected]>
fix(syn): correct flat encoder to produce identical roundtrip bytes
The flat encoder had two bugs that caused Encode(Decode(bytes)) to
produce different bytes than the original input. This broke script hash
derivation when applying parameters to compiled Plutus scripts in Go,
since the re-encoded bytes differed from what reference implementations
(Blaze SDK, Aiken) produce.

Bug 1: bits() used direct byte manipulation for multi-bit writes (3+
bits) that packed bits incorrectly across byte boundaries. Replaced with
a simple MSB-to-LSB loop delegating to one()/zero(), matching the
reference flat encoder's pushBits() approach.

Bug 2: encodeConstantType() for TList and TPair was missing the
list-continuation marker bits (one()) before each type tag. The decoder
reads constant type tags via DecodeList, which expects a 1-bit before
each tag entry, but the encoder wrote raw tags without these delimiters.

Added a roundtrip test using a synthetic UPLC program that exercises all
term types (Lambda, Apply, Var, Constant, Force, Delay, Builtin, Constr,
Case, Error) and constant types (Integer, ByteString, Bool, Data).

Signed-off-by: Pascal Grange <[email protected]>
chore(deps): bump github.com/consensys/gnark-crypto (#230)
Bumps [github.com/consensys/gnark-crypto](https://github.com/consensys/gnark-crypto) from 0.19.2 to 0.20.0.
- [Release notes](https://github.com/consensys/gnark-crypto/releases)
- [Changelog](https://github.com/Consensys/gnark-crypto/blob/master/CHANGELOG.md)
- [Commits](https://github.com/consensys/gnark-crypto/compare/v0.19.2...v0.20.0)

---
updated-dependencies:
- dependency-name: github.com/consensys/gnark-crypto
  dependency-version: 0.20.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
chore(deps): bump golang.org/x/crypto from 0.48.0 to 0.49.0 (#229)
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.48.0 to 0.49.0.
- [Commits](https://github.com/golang/crypto/compare/v0.48.0...v0.49.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-version: 0.49.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
chore(deps): bump github.com/consensys/gnark-crypto
Bumps [github.com/consensys/gnark-crypto](https://github.com/consensys/gnark-crypto) from 0.19.2 to 0.20.0.
- [Release notes](https://github.com/consensys/gnark-crypto/releases)
- [Changelog](https://github.com/Consensys/gnark-crypto/blob/master/CHANGELOG.md)
- [Commits](https://github.com/consensys/gnark-crypto/compare/v0.19.2...v0.20.0)

---
updated-dependencies:
- dependency-name: github.com/consensys/gnark-crypto
  dependency-version: 0.20.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
chore(deps): bump golang.org/x/crypto from 0.48.0 to 0.49.0
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.48.0 to 0.49.0.
- [Commits](https://github.com/golang/crypto/compare/v0.48.0...v0.49.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-version: 0.49.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
chore(deps): bump github.com/consensys/gnark-crypto
Bumps [github.com/consensys/gnark-crypto](https://github.com/consensys/gnark-crypto) from 0.19.2 to 0.20.0.
- [Release notes](https://github.com/consensys/gnark-crypto/releases)
- [Changelog](https://github.com/Consensys/gnark-crypto/blob/master/CHANGELOG.md)
- [Commits](https://github.com/consensys/gnark-crypto/compare/v0.19.2...v0.20.0)

---
updated-dependencies:
- dependency-name: github.com/consensys/gnark-crypto
  dependency-version: 0.20.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
chore(deps): bump golang.org/x/crypto from 0.48.0 to 0.49.0
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.48.0 to 0.49.0.
- [Commits](https://github.com/golang/crypto/compare/v0.48.0...v0.49.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-version: 0.49.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>