Skip to content

Latest commit

 

History

History
416 lines (336 loc) · 18.7 KB

CHANGELOG.md

File metadata and controls

416 lines (336 loc) · 18.7 KB

Changelog

HEAD

1.0.4

  • bnsd: Upgrade Tendermint to v0.31.12.
  • bug: Fix renew domain handler renews empty string account
  • feature/account: Accounts in non super user domains cannot be flushed

1.0.3

  • bnsd: include domain grace period in make protoc generated files

1.0.2

  • feature/account: A non owner can delete domain after grace period ends

1.0.1

  • bnsd: updated error messages to better reflect the account module spec
  • bnsd: account targets are cleared when an account is transferred
  • bnsd: 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 duration
  • bnsd: revert burn feature
  • bnsd: when a domain is transferred accounts ownership is transferred to the new domain owner and accounts' targets are cleared
  • bnsapi: move bnsapi to new repo
  • bnscli: fix boolean flag bug
  • bug: Refactor register domain message issue#1165
  • bug: Add broker to Account model and RegisterAccountMsg
  • feature: Validate broker field
  • bnsd: Expose msgfee bucket to the query router

1.0.0

  • bnsd: set fee to zero for preregistration.RegisterMsg
  • bnsd: add msgfee.UpdateConfigurationMsg support
  • bnsd: 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: allow datamigration messages to be executed by a proposal
  • bnsd: a new query endpoint /gconf which allows to fetch any gconf 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 with bnsd. 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 to iov1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqvnwh0u 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

0.25.1

Breaking changes

  • x/txfee extension decorator is a no-op wrapper when configuration for x/txfee does not exist.

0.25.0

  • x/txfee extension created and integrated in cmd/bnsd. Txfee add additional fee depending on the transaction binary size.

Breaking changes

  • bnsd/x/preregistration extension created and integrated into bnsd. It allows for preregistering account domains that later will be migrated into the account 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.

0.24.1

  • 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 from x/username extension to x/account.

0.24.0

  • add cash configuration update message to bnsd transaction
  • x/account extension added and installed in cmd/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 and orm.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.

0.23.0

  • 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 to x.AnySigner to better describe provided functionality.

0.22.0

  • x/username: allow to change configuration via message
  • gconf: 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 into cmd/bnsd application.
  • orm: implement SerialModelBucket that provides a better API to interact with datastore.
  • migration: implement migration for SerialModelBucket.

0.21.3

  • x/msgfee was extended to provide a message to set a fee for a given message path. bnscli and bnsd were extended to support this change.

Breaking changes

  • orm package was updated to no longer rely on Clone and Copy methods. Models no longer must implement orm.Cloneable. Models must implement orm.Model interface, which is a subset of orm.Cloneable. When creating a new bucket instance a model instance must be provided instead of orm.SimpleObj.
  • CounterWithID field has been added to codec.proto as an helper for testing SerialModelBucket

0.21.2

  • Upgrade tendermint dependency to v0.31.9

0.21.1

  • Let AntispamFeeDecorator handle empty product fee.

0.21.0

  • x/batch: increase maximum number of messages to 15
  • cmd/bnscli: a new command mnemonic 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 appends option go_package = "github.com/iov-one/weave"; to prevent protoc error in weave based frameworks
  • cmd/bnscli support for more query endpoints
  • bnsd/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 Version
  • cmd/bnscli: now expects VersionedIDRef to be serialised using the new format

0.20.0

  • update all extensions to use multi-error for gathering validation errors.
  • add query command to the bnscli 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.

0.19.0

  • 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 to x/cron extension.
  • Add owner index to bnsd x/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 entities aswap.Swap, escrow.Contract, distribution.Revenue, multisig.Contract gov.ElectionRule and paychan.PaymentChannel.

Breaking changes

  • weave.Ticker interface was updated.
  • Add owner index to bnsd x/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 to string. 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.

0.18.0

  • bnsd/x/username genesis initializer implemented and included in bnsd.
  • 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: all bnsd transactions now have action=${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 and sender to source
    • rename dst and recipient to destination

0.17.0

  • 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 on x/nft package.
  • Add CommitInfo to the context in order to be able to see who signed the current block.
  • cmd/bnscli new commands
    • with-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.
  • Iterators in store (btree cache and iavl adaptor) are now lazy. We also provide a ReadOneFromIterator 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 package bnsd, rather than conflicting with generic app messages in a namespace conflict.
  • Moved some more messages from x/validators package to weave
  • 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 UX
  • cash.UpdateConfigurationMsg requires Metadata.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

0.16.0

  • 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 provide orm.ModelBucket wrapper for transparent schema version migrations
  • x/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 all sample*_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 in cmd/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 entities x/cash.FeeInfo and x/sigs.StdSignature
  • Max length of blockchain ids used in username NFTs is now 32 (previously 128)

0.15.0

  • Tendermint is upgraded to version 0.31.5
  • New x/aswap extension implementing atomic swap functionality. Atomic swap implementation is separated from x/escrow
  • x/cash is using the new gconf 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 height
  • gconf 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 by migrations 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

0.14.0

  • 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 in x/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

0.13.0

  • 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

0.12.1

  • 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