bnsd
: Upgrade Tendermint to v0.31.12.bug
: Fix renew domain handler renews empty string accountfeature/account
: Accounts in non super user domains cannot be flushed
bnsd
: include domain grace period inmake protoc
generated files
feature/account
: A non owner can delete domain after grace period ends
bnsd
: updated error messages to better reflect the account module specbnsd
: account targets are cleared when an account is transferredbnsd
: domain renew expiration time equals to domain expiration time + configuration domain renew duration, if this time is before current block time then renew time becomes current block time + configuration domain renew durationbnsd
: revert burn featurebnsd
: when a domain is transferred accounts ownership is transferred to the new domain owner and accounts' targets are clearedbnsapi
: move bnsapi to new repobnscli
: fix boolean flag bugbug
: Refactor register domain message issue#1165bug
: Add broker to Account model and RegisterAccountMsgfeature
: Validate broker fieldbnsd
: Expose msgfee bucket to the query router
bnsd
: set fee to zero forpreregistration.RegisterMsg
bnsd
: addmsgfee.UpdateConfigurationMsg
supportbnsd
: a data migration for rewriting blockchain ID to CAIP specified format- a new
weave.Fraction
type was added to represent fractional values. It should be used instead of floating point type when precision is needed. - enable all
x/account
messages to be executed via proposal bnsd
: allowdatamigration
messages to be executed by a proposalbnsd
: a new query endpoint/gconf
which allows to fetch anygconf
managed configuration entity.- A new query mod
range
that allows to query for items between certain rage. Result set size is always limited which makes this query suitable for public API. - a new application
cmd/bnsapi
was added. - Go 1.13 is now supported and tested by CI.
- Tendermint upgraded to 0.31.11.
bnsd/x/termdeposit
a new extension for fix-term deposit of money and investment. Integrated withbnsd
.bnscli
was updated to support new messages.orm
: native index supports ABCI queries returning all matching entities without pagination.
Breaking change
bnsd
was updated to burn (remove from the system) any funds send toiov1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqvnwh0u
address.- minimal Go version is now 1.12.14.
- bnsd/x/account: a new
admin
index in Domain bucket - bnsd/x/account: a new
owner
index in Account bucket
Breaking changes
x/txfee
extension decorator is a no-op wrapper when configuration forx/txfee
does not exist.
x/txfee
extension created and integrated incmd/bnsd
. Txfee add additional fee depending on the transaction binary size.
Breaking changes
bnsd/x/preregistration
extension created and integrated intobnsd
. It allows for preregistering account domains that later will be migrated into theaccount
implementation using a data migration.x/escrow
:CreateMsg.Source
is no longer optional and is now required.x/sigs
:BumpSequenceMsg.User
is now required and cannot be empty.
x/msgfee
configuration in genesis is optional. Not providing it no longer fails initialization.- a new
orm.IterAll
iterator was implemented to allow iterating through all entities of a given bucket. - a
bnsd
data migration was added that rewrites all accounts fromx/username
extension tox/account
.
- add cash configuration update message to
bnsd
transaction x/account
extension added and installed incmd/bnsd
.cmd/bnscli
was updated to support the new extension.datamigration
package added.orm
package was updated and provides a new index implementation, that is using a native database store in order to maintain and iterate through an index.orm.Bucket
andorm.ModelBucket
were updated to allow for the use of the new index implementation.
Breaking changes
orm.Index
is an interface now to allow multiple implementations. The new interface is a subset of the old structure, simplified and updated to support lazy loading:Keys
method returns an iterator,GetLike
method was removed,
orm.Bucket
interface was simplified.GetIndexedLike
was removed,orm.WithIndex
supports multiple indexer types,orm.NewIndex
function was removed,
Breaking changes
x/username
: rollback of registration change introduced in 0.23.0. When registering a token, do not allow to explicitly specify the new token owner.
x/sigs
allow to explicitly specify which user to bump the sequence for instead of relying on the transaction signatures.x/username
when registering a token, allow to explicitly specify the new token owner instead of relying only on the transaction signatures.
Breaking changes
- deprecate and rename
x.MainSigner
tox.AnySigner
to better describe provided functionality.
x/username
: allow to change configuration via messagegconf
: allow to provide an optional authentication address that will be used to authenticate a configuration creation message. This solves a chicken-egg problem of when the confgiuration was not created via genesis.migrations
: when upgrading the schema version an explicit version must be provided. This is required to ensure at most one delivery.cmd/bnscli
can create a schema upgrade transaction.- Blue Account functionality was implememented in
cmd/bnsd/x/blueaccount
but not integrated intocmd/bnsd
application. orm
: implementSerialModelBucket
that provides a better API to interact with datastore.migration
: implement migration forSerialModelBucket
.
x/msgfee
was extended to provide a message to set a fee for a given message path.bnscli
andbnsd
were extended to support this change.
Breaking changes
orm
package was updated to no longer rely onClone
andCopy
methods. Models no longer must implementorm.Cloneable
. Models must implementorm.Model
interface, which is a subset oform.Cloneable
. When creating a new bucket instance a model instance must be provided instead oform.SimpleObj
.CounterWithID
field has been added tocodec.proto
as an helper for testingSerialModelBucket
- Upgrade tendermint dependency to v0.31.9
- Let AntispamFeeDecorator handle empty product fee.
x/batch
: increase maximum number of messages to 15cmd/bnscli
: a new commandmnemonic
was added for generating a random mnemonic as described in BIP-39.weave.Options
: add an option to stream json for lower memory footprint when parsing large json objects.cmd/bnscli
: when a transaction is submitted, for certain messages parse returned response data and print it in a human readable format.clean_protos.sh
appendsoption go_package = "github.com/iov-one/weave";
to prevent protoc error in weave based frameworkscmd/bnscli
support for more query endpointsbnsd/x/username
was updated and now the username validation rules are defined dynamically via gconf powered configuration.
Breaking changes
cmd/bnscli
:keygen
command was updated and requires a mnemonic to generate a key.orm
:VersionedIDRef
is now de/serialized by appending BigEndian ID and BigEndian Versioncmd/bnscli
: now expects VersionedIDRef to be serialised using the new format
- update all extensions to use multi-error for gathering validation errors.
- add
query
command to thebnscli
tool
Breaking changes
bnsd/x/username
:iov
is the only valid and accepted domain name for a username. This limitation is forced for the MVP release as we do not have namespace management implemented.
- Remove
testify
dependency from our tests - A new extension
x/cron
is added. It allows to configure weave application to be able to schedule messages for future execution. - Proposals created with
x/gov
are having their tally executed automatically after the voting time is over. This is possible thanks tox/cron
extension. - Add
owner
index to bnsdx/username
to be able to query tokens by owner. - Allow empty targets in bnsd
x/username
to enable name reservation. - Allow to update election quorum.
- Add self referencing
address
attribute to entitiesaswap.Swap
,escrow.Contract
,distribution.Revenue
,multisig.Contract
gov.ElectionRule
andpaychan.PaymentChannel
.
Breaking changes
weave.Ticker
interface was updated.- Add
owner
index to bnsdx/username
to be able to query tokens by owner. - Allow empty targets in bnsd
x/username
to enable name reservation. - Username address type in
x/username
extension was changed from[]byte
tostring
. Instead of base64 encoded value, a valid string is stored as the address. - Some of the query paths in the
x/gov
package were updated to follow the naming convention. gov.TallyMsg
is no longer available. Tally is created automatically when the voting time is over.
bnsd/x/username
genesis initializer implemented and included inbnsd
.- Support gov proposal vote, deletion and tally in
bnscli
- Support gov proposal text resolution, update electorate, update election rules in
bnscli
- Added
x/utils.ActionTagger
: allbnsd
transactions now haveaction=${msg.Path()}
tags. If there is a batch, there is one tag per sub-message. If it is a governance tally, the TallyMsg as well as the option (message executed on behalf of the governance stack) is tagged.
Breaking changes
- Unify all message paths to follow pattern
<package>/<message_name>
app.Router
interface was changed. Handler registration requires a message and not message path.- Unify all message attribute names
- rename
src
andsender
tosource
- rename
dst
andrecipient
todestination
- rename
- Unified dedupe logic for validator bookkeeping and validator diffs in
app
- A new
errors.Field
was added. This allows to bind errors to field names and enables easier testing of group errors. - Expose some more Genesis params to extension initializers. Utilise those in
x/validators
to store initial validator list and validate updates against this list while updating on every successful transaction. - A new from scratch username implementation
x/username
was added. This implementation does not rely onx/nft
package. - Add
CommitInfo
to the context in order to be able to see who signed the current block. cmd/bnscli
new commandswith-fee
to configure a transaction fee,set-validators
to configure the validators,multisig
to create or update a multisig contract,with-multisig
to attach a multisig to a transaction,with-multisig-participant
to attach a participant to a multisig contract create/update transaction
x/aswap
allow timeout of a swap to be any value after 1970-01-01.Iterator
s in store (btree cache and iavl adaptor) are now lazy. We also provide aReadOneFromIterator
function to easily get the first or last item in a range. This will only load desired items from disk and no longer greedily load the entire range before returning the first item.
Breaking changes
- Update
bnsd
transaction entities. All transaction attributes that point to a message are now snake case, and their naming follows the format<package_name>_<message_type_name>
. - Some messages were renamed to follow the general
start with a verb
format, also to remove stutter:cmd/bnsd
:BatchMsg
->bnsd.ExecuteBatchMsg
,ProposalBatchMsg
->bnsd.ExecuteProposalBatchMsg
x/aswap
:CreateSwapMsg
->aswap.CreateMsg
,ReleaseSwapMsg
->aswap.ReleaseMsg
,ReturnSwapMsg
->aswap.ReturnMsg
x/cash
:ConfigurationMsg
->cash.UpdateConfigurationMsg
x/currency
:NewTokenInfoMsg
->currency.CreateMsg
x/distribution
:NewRevenueMsg
->distribution.CreateMsg
,ResetRevenueMsg
->distribution.ResetMsg
x/escrow
:CreateEscrowMsg
->escrow.CreateMsg
,ReleaseEscrowMsg
->escrow.ReleaseMsg
,ReturnEscrowMsg
->escrow.ReturnMsg
,UpdateEscrowPartiesMsg
->escrow.UpdatePartiesMsg
x/gov
:TextResolutionMsg
->gov.CreateTextResolutionMsg
x/multisig
:CreateContractMsg
->multisig.CreateMsg
,UpdateContractMsg
->multisig.UpdateMsg
x/paychan
:CreatePaymentChannelMsg
->paychan.CreateMsg
,TransferPaymentChannelMsg
->paychan.TransferMsg
,ClosePaymentChannelMsg
->paychan.CloseMsg
x/validators
:SetValidatorsMsg
->validators.ApplyDiffMsg
bnsd/x/username
:Username
string removed from all message names.
bnsd
specific protobuf objects (Tx, BatchMsg) are now under packagebnsd
, rather than conflicting with genericapp
messages in a namespace conflict.- Moved some more messages from
x/validators
package toweave
cmd/bnsd
:nft/username
allows now for any number of aliases/names for a single address. Lookup of the username by an address is no longer available.- messages produced by
cmd/bnscli
have a new binary format incompatible with the previous version. x/gov
added indexes to proposals and electorate to enable better client-side UXcash.UpdateConfigurationMsg
requiresMetadata.Schema
- ValidatorUpdate definitions now moved to
weave
package. Weave is using these definitions now instead of abci internally. - Simplified
Iterator
to 2 methods - Next() and Release() - Removed
cmd/bcpd
application - Removed
x/namecoin
package that is no longer used. - Removed obsolete
examples
directory
- A new tool
cmd/bnscli
for interacting with a BNS node was created. - Creation of a new proposal in
x/gov
extension is now restricted to only members of the electorate that this proposal is created for. - Cleanup escrow: removed the support for atomic swap
- A new bucket implementation
orm.ModelBucket
was added that provides an easier to use interface when dealing with a single entity type. migration
package was updated to provideorm.ModelBucket
wrapper for transparent schema version migrationsx/gov
package was added, which maintains multiple versioned Electorates and ElectionRules that define voting rules (quorum, threshold, voting period) for a given Electorate. Votes can be tallied at the end and execute an application-defined action which is passed in to the constructor. This is compatible with standard handler interfaces and sample application-level setup is demonstrated in the test code (and allsample*_test.go
code).- Failed execution of the Proposal intent does not result in a failed
transaction (so we update the Proposal state properly), but is rolled back
independently and noted in
DeliverResult.Log
(reporting to be improved in a future issue) x/gov
adds three internal transations: UpdateElectorate, UpdateElectionRule, and TextResolution. TextResolutions can only be created by elections and the text is stored in a bucket along with a reference to the electorate and proposal that they refer to.- Enabled
x/batch
in bnsd. You can now send a batch of messages, which are executed atomically as one unit (all succeed, or no changes committed). x/gov
methods are exposed in bnsd application. The list of messages that are eligible for proposals is incmd/bnsd/app/codec.go.ProposalOptions
. Note that you can also use a batch message with a subset of possible actions, to make multiple SendTx as part of a governance vote, for example.- Dockerize all the protobuf tooling for easier developer experience and reproducible builds
- You can use "seq:multisig/usage/1" or similar in the genesis file to easily create addresses without manually encoding everything into 16 hex digits
- Introduce
errors.Append
function to combine errors into a new multi error type spec
directory now contains protobuf files and testvectors (standard api objects in both json and binary encodings) to enable easier bindings and unit tests in client code, and projects that import weave.
Breaking changes
- Escrow does not support atomic swap anymore: preimage is removed from Tx and, haslock extension removed and arbiter now must be an Address and not a Condition
Metadata
attribute was removed from transaction attributes. This affects two entitiesx/cash.FeeInfo
andx/sigs.StdSignature
- Max length of blockchain ids used in username NFTs is now 32 (previously 128)
- Tendermint is upgraded to version 0.31.5
- New
x/aswap
extension implementing atomic swap functionality. Atomic swap implementation is separated fromx/escrow
x/cash
is using the newgconf
package for configuration. New genesis path is used. To update genesis file, replace"gconf": { "cash:xyz": "foo" }
with"conf": { "cash": { "xyz": "foo" } }
- Removed support for Go 1.10. Minimal required version is now 1.11.4.
- Added support for Go 1.12
- New
migration
package. Schema versioning for models and messages can be implemented by relying on functionality provided by this package.
Breaking changes
- Dependency management was migrated to Go modules.
dep
is no longer used or supported. x/paychan
extension is using a wall clock for the timeout functionality instead of relying on the block heightgconf
package was reimplemented from scratch. Configuration can be changed during the runtime using messages.- Many extensions where updated to provide
weave.Metadata
and support schema versioning as implemented bymigrations
package. Protobuf messages are using new schema and are not binary compatible with old ones. Updated extensions are:x/cash
,x/currency
,x/distribution
,x/escrow
,x/msgfee
,x/multisig
,x/namecoin
,x/nft
,x/paychan
,x/sigs
,x/validators
- Simplify transaction message unpacking with
weave.LoadMsg
- Initial version of the governance extension (
x/gov
) - Signature verification in
x/sigs
extension costs gas now - A new message
BumpSequenceMsg
for incrementing a user sequence value inx/sigs
extension - A new validator subjective anti-spam fee was added
Breaking changes
- Timeout types in
x/escrow
changed to UNIX timestamps - When considering expiration in
x/escrow
extension, expiration time is now inclusive
- Allow app.ChainDecorators to accept nil
- Improve high-level benchmarks, sending coins with fees at ABCI level
- Remove composite literal uses of unkeyed fields
- Extend multisig contract with weights
- Cleanup coins package errors
- Add support for bech32 in genesis file
Breaking changes
- Distribution condition must match regexp for validation
- Deprecate Error.New for errors.Wrap
- Only support Error.Is with better algorithm
- Support time with escrow