Releases: kwilteam/kwil-db
v0.7.4
What's Changed
- kwild: fixes bug where oracle txs were not properly voted on in single-node networks (57cb1d6)
- kwild: fixes bug where schema extensions are not properly returned by the RPC service (1e4abb3)
- kwild: returns a declared error type when an invalid signature is verified in the functions RPC (4863d69)
- core: gwclient auth precheck (577f5e4)
- core readme and example app (62f3099)
(since v0.7.2, as v0.7.3 was unreleased)
Full Changelog: v0.7.2...v0.7.4
v0.7.2
What's Changed
- core: fix parse kgw error, so it output detailed message (1417711). Correctly parse common kgw errors, so it outputs detailed a message.
- version: bump to 0.7.2 in vanilla go builds (b22a5f2).
- ci: test kgw in release workflow (1744789).
- http: strip trailing slashes from "BasePath" (d6820ac) This change fixes our http client constructors to trim trailing slashes.
- ci: run kwil-js test (0df049b)
- gatewayclient: fix domain compare when match cookie (e567538). Prevent re-prompting for authentication because of incorrect cookie matching based on a domain string that included port
- use core/v0.1.2 for release (4b1819b).
Full Changelog: v0.7.1...v0.7.2
v0.6.7
What's Changed
- added read timeouts for registry SQL queries (e5216ad).
- core/rpc/client/user/http: read and interpret error messages (47ccd8b). Add uniform error parsing to each of the http client methods. The server doesn't emit "unknown" status codes resulting in http responses with 500 status codes.
- core: fix parse kgw error, so it output detailed message (83d4844). Correctly parse common kgw errors, so it outputs detailed a message.
- bump version string to v0.6.7 (ad4a4eb).
- http: strip trailing slash from "BasePath" (7226024). This change fixes our http client constructors to trim trailing slashes
from the base URL, preventing confusing 404 not found errors from kwil-cli. - gatewayclient: fix domain compare when match cookie (0bbb562). Prevent re-prompting for authentication because of incorrect cookie matching based on a domain string that included port.
Full Changelog: v0.6.6...v0.6.7
v0.7.1
What's Changed
- abci,kwild: write in-memory cometbft confs to disk for inspect (69adf12). The
cometbft
command line application'sinspect
androllback
commands are supported on the "abci" subfolder ofkwild
's root directory, while the node is stopped. A rollback will require recreating the entire PostgreSQL database to replace all blocks. - engine: create a max procedure call stack depth (b74380e). Limit action recursion depth.
- sql,pg,engine: rework sql interfaces (6ef9117). This internal change does not affect users or node operation.
- abci,txapp,kwild: new chain meta store (5dc2d6b, ff06172). Migrate the applications metadata store, which contains current best block, into the PostgreSQL tables with the other application data. This prevents a number of deployment gotchas.
- server,pg: fix shutdown sequence (8326adf). This makes shutdown more robust, preventing a possible apphash computation error for a block being finalized during shutdown.
Full Changelog: v0.7.0...v0.7.1
v0.7.0
Introduction
Kwil v0.7 changes the underlying database engine from SQLite to Postgres. Furthermore, Kwil v0.7 features a new programmable oracle system, allowing network validators to simultaneously operate as network oracles.
Breaking Changes
Kwil v0.7 has a few minor breaking changes. These were mostly due to changing the underlying database, and removing incompatible features that are not used:
- Removes several SQLite specific functions that were exposed in Kuneiform and unused.
- Removes RTRIM and BINARY collation types.
- Extra type safety in the database enforces type-casting for any statement that performs math on two parameters without utilizing a database column. For example,
SELECT $1 + $2;
must now beSELECT $1::int + $2::int;
. - Node operators must now specify a Postgres instance to connect to when starting their node.
Kuneiform
- Kuneiform now features type assertions for all SQL language expressions. Type assertions can be added to any expression using double colons:
SELECT id::text, username FROM users WHERE age%10 = ($age%10)::int;
. - Kuneiform now supports the
SUM()
aggregate functions.
Nodes
- When running
kwild
, a Postgres connection with superuser access must be specified. It must have the following configurations:wal_level=logical
max_wal_senders=10
max_replication_slots=10
max_prepared_transactions=2
- Nodes can be configured to credit account balances based on EVM logs. Logs must follow the log signature
Credit(address,uint256)
.
Extensions
Coinciding with the open-sourcing of Kwil, v0.7 includes new compile-time extensions. Using compiled extensions, developers can build custom kwild
binaries with custom rules, logic, and functionality. Examples for each type of extension have been included. The different types of extensions are:
auth
: Custom hooks for asymmetric cryptographic signature verification. This allows networks to build support for virtually any type of asymmetric signature scheme, which will integrate wallets directly into Kwil's native account store. Examples includeed25519
signatures and NEAR'snep413
signing standard.actions
: Custom action execution logic, which was debuted using Docker containers in v0.5, can now be compiled directly into thekwild
binary. Compiled action extensions can directly read and write to network schemas, as well as to Postgres directly. Examples include an ad-hoc DML/DQL extension, allowing networks to support ad-hoc user-submitted INSERT, UPDATE, DELETE, and SELECT statements.oracles
(experimental): Nodes can be programmed to operate as network oracles, receiving rewards when successfully performing oracle duties. Oracles are meant to be driven around event data from other systems, such as EVM logs. >2/3rds of the validating power of the network must agree on an event within a pre-defined time period. Examples include an erc20 deposit oracle, which is capable of crediting users native Kwil gas when an EVM log is triggered.resolutions
(experimental): Related tooracles
,resolutions
can be programmed to specify custom logic to be executed when external event data has been agreed upon by >2/3rds validators. Examples include gas credits, which credit native Kwil accounts.
v0.6.6
v0.7.0-beta
Introduction
Kwil v0.7 changes the underlying database engine from SQLite to Postgres. Furthermore, Kwil v0.7 features a new programmable oracle system, allowing network validators to simultaneously operate as network oracles.
Breaking Changes
Kwil v0.7 has a few minor breaking changes. These were mostly due to changing the underlying database, and removing incompatible features that are not used:
- Removes several SQLite specific functions that were exposed in Kuneiform and unused.
- Removes RTRIM and BINARY collation types.
- Extra type safety in the database enforces type-casting for any statement that performs math on two parameters without utilizing a database column. For example,
SELECT $1 + $2;
must now beSELECT $1::int + $2::int;
. - Node operators must now specify a Postgres instance to connect to when starting their node.
Kuneiform
- Kuneiform now features type assertions for all SQL language expressions. Type assertions can be added to any expression using double colons:
SELECT id::text, username FROM users WHERE age%10 = ($age%10)::int;
. - Kuneiform now supports the
SUM()
aggregate functions.
Nodes
- When running
kwild
, a Postgres connection with superuser access must be specified. It must have the following configurations:wal_level=logical
max_wal_senders=10
max_replication_slots=10
max_prepared_transactions=2
- Nodes can be configured to credit account balances based on EVM logs. Logs must follow the log signature
Credit(address,uint256)
.
Extensions
Coinciding with the open-sourcing of Kwil, v0.7 includes new compile-time extensions. Using compiled extensions, developers can build custom kwild
binaries with custom rules, logic, and functionality. Examples for each type of extension have been included. The different types of extensions are:
auth
: Custom hooks for asymmetric cryptographic signature verification. This allows networks to build support for virtually any type of asymmetric signature scheme, which will integrate wallets directly into Kwil's native account store. Examples includeed25519
signatures and NEAR'snep413
signing standard.actions
: Custom action execution logic, which was debuted using Docker containers in v0.5, can now be compiled directly into thekwild
binary. Compiled action extensions can directly read and write to network schemas, as well as to Postgres directly. Examples include an ad-hoc DML/DQL extension, allowing networks to support ad-hoc user-submitted INSERT, UPDATE, DELETE, and SELECT statements.oracles
(experimental): Nodes can be programmed to operate as network oracles, receiving rewards when successfully performing oracle duties. Oracles are meant to be driven around event data from other systems, such as EVM logs. >2/3rds of the validating power of the network must agree on an event within a pre-defined time period. Examples include an erc20 deposit oracle, which is capable of crediting users native Kwil gas when an EVM log is triggered.resolutions
(experimental): Related tooracles
,resolutions
can be programmed to specify custom logic to be executed when external event data has been agreed upon by >2/3rds validators. Examples include gas credits, which credit native Kwil accounts.
v0.6.0
What's Changed
- Feature/support view action by @brennanjl in #154
- fix: change
call
rpc payload to bytes by @Yaiba in #158 - go.mod: use carved out googleapis/apis sub module by @jchappelow in #144
- added owner modifier into engine by @Yaiba in #161
- Abci refactor by @brennanjl in #163
- Added Test cleanups for Acceptance tests to remove temp data and addr… by @charithabandi in #166
- fixed kwil-cli by @brennanjl in #167
- comet rebase followup, allow to build and test most things by @jchappelow in #169
- add back test DB methods that are needed for teardown by @jchappelow in #173
- pkg/crypto: cover account/prefixed data sig verification and fix case sensitivity by @jchappelow in #139
- dependency injection fix by @brennanjl in #172
- fix: kwild utils subcmd share flags vars by @Yaiba in #171
- remove cometbft awareness from txsvc by @jchappelow in #175
- replace deprecated rand.Seed with crypto/rand impl by @brennanjl in #180
- Fixing changesets ordering: current implementation is broken due to h… by @charithabandi in #179
- Fixing test account store initialization with options to set nonces and gas by @charithabandi in #181
- new transactions by @brennanjl in #178
- Refactor/act test env setup by @Yaiba in #183
- fix: test build issue by @Yaiba in #185
- Conflict resolution for changesets by @charithabandi in #186
- implemented fix for non-determinism in account-stores SQL schema by @brennanjl in #189
- Migrating the Comet-ABCI based utils to abci dir by @charithabandi in #192
- add linter action and task, fix append bug in sql/client by @jchappelow in #194
- feat: support secp256k1 key by @Yaiba in #187
- add validator store and module for ABCI app by @jchappelow in #182
- pkg/sessions: fix test race in apply done callback by @jchappelow in #199
- CI: narrow target of build and lint by @jchappelow in #198
- Added support for Snapshotstore and Bootstrapper by @charithabandi in #201
- Fix/abci by @brennanjl in #188
- not using ~ folder when run kwild with ROOT_DIR not set by @Yaiba in #204
- Unittests with -race flag and cleanup by @charithabandi in #197
- fix docker buildx issue by @Yaiba in #202
- Fix/case sensitive mutability by @brennanjl in #206
- abci: use a semaphore for commit/apply/beginblock by @jchappelow in #196
- Snapshot crash fix by @charithabandi in #203
- config: fix config.json path issues by @jchappelow in #211
- utils: clean up and remove stdlib duplication by @jchappelow in #213
- ci: temporarily disable just the acceptance-test by @jchappelow in #210
- fixed serialization unit tests to actually check equality by @brennanjl in #217
- cli: remove chainClientRPCURL and fix privkey by @jchappelow in #214
- CLI: generate-key function, and multi-ecosystem address supports by @brennanjl in #215
- include generated pb files in repo by @jchappelow in #222
- CI/tasks: ensure go.mod/sum and generated pb code are up-to-date by @jchappelow in #223
- add TLS to gRPC client/server by @jchappelow in #207
- feat: separate default signer from private key by @Yaiba in #226
- add TxQuery rpc, with depoly database act test by @Yaiba in #209
- Integrate Kwild and CometBft configs through a TOML file by @charithabandi in #220
- various bug fixes by @brennanjl in #227
- sqlite: test formatFilepath handling of paths w/wo trailing slash by @jchappelow in #228
- Fix/minor config issues by @Yaiba in #230
- adjust acceptance/integration test setup using new config by @Yaiba in #229
- allow kwild commands without config file or private key set by @jchappelow in #232
- test: expectTxSuccess util function by @Yaiba in #233
- Fixes the template parsing for config.toml by @charithabandi in #234
- nodecfg: fix privkey duplication by @jchappelow in #235
- Added a utility to generate a private key by @charithabandi in #236
- chore: update proto, tag multi letter filed use snake case by @Yaiba in #239
- wrap cometbft logger by @jchappelow in #225
- update the kwil docker compose deployment for new config by @jchappelow in #237
- first draft at public-key centric model by @brennanjl in #231
- Use config file instead of home dir in the cmd line by @charithabandi in #240
- added near signer and verifier by @brennanjl in #243
- fix: gateway cors is not applied by @Yaiba in #246
- Sanitize path inputs by @charithabandi in #245
- Update acceptance & integration tests to use the new configuration style by @charithabandi in #251
- ci: re-enable acceptance tests by @jchappelow in #252
- add context to personal_sign messge by @Yaiba in #241
- Add env variables config support by @charithabandi in #253
- chore: update kuneiform version by @Yaiba in #256
- added caller_address by @brennanjl in #257
- added call authentication for kwil cli by @brennanjl in #250
- make logger more versatile and filter comet bft spam by @jchappelow in #254
- fix: add back missing gateway endpoints by @Yaiba in #259
- ci: add staticcheck to linters list by @jchappelow in #260
- fixed acceptance test not waiting for a tx by @brennanjl in #258
- Move the private key from config.toml to private_key.txt file by @charithabandi in #261
- txsvc: implement some of the unhandled validator methods by @jchappelow in #205
- check mempool in TxQuery if not mined by @jchappelow in #264
- added basic tx query to cli by @brennanjl in #271
- cometbft: fix logwrapper caller by @jchappelow in #276
- ci: trigger workflow for non-draft pr by @Yaiba in #283
- Integration tests for Validators by @charithabandi in #280
- Minor fixes in integration test by @charithabandi in #289
- config: trim leading/trailing white space priv key by @jchappelow in #275
- split kwild / kwil-admin by @jchappelow in #281
- [discussion] make procedure instruction execution from view/Call RO by @jchappelow in #298
- feat: enable test container debugger by @Yaiba in #297
- pkg/engine: drop 3rd party errors lib by @jchappelow in #290
- fix buildkit typo in docker build script, add ignores by @jchappelow in #299
- undo invalid auto-init docker image by @jchappelow in #307
- feat: support kwil-cli output as json by @Yaiba in #282
- feat: support friendly signature in call rpc by @Yaiba in #306
- admin gRPC skeleton with mTLS authentication by @jchappelow in https://github.com/kwilteam/kwil-db/...
v0.5.0
What's Changed
- Cli update by @charithabandi in #111
- Feature/extensions by @brennanjl in #122
- updated extension client, removed extensions submodule by @brennanjl in #124
- added ability to turn off account store by @brennanjl in #125
- Feature/remove unneeded configs by @brennanjl in #126
- made it possible to not have cli configs by @brennanjl in #127
- made slight changes to how extensions are initialized. added in timeouts to extensions by @brennanjl in #129
- Feature/engine snapshots by @brennanjl in #134
- added optional ability to write data to bundlr network by @brennanjl in #145