Releases: deso-protocol/core
v3.4.2
v3.4.1
v3.4.0
v3.4.0 addresses a bug that causes nodes to crash loop when transitioning from utxo model to balance model
What's Changed
- Fix access group spending limit encoding by @AeonSw4n in #493
- include extra data, txn version, txn nonce, and txn fee nanos when unmarshaling in go by @lazynina in #496
- make Read transaction functions public by @lazynina in #498
- Ln/fix peer panic issue by @lazynina in #499
- fix hypersync nonce issue by @lazynina in #500
- HOTFIX: error on no nonce after block height by @lazynina in #508
Full Changelog: v3.3.0...v3.4.0
v3.3.0
Fork Preparation Checklist
In order to upgrade your node to be compatible with this new version, please complete all steps of the checklist below
- Reboot your node with the most recent stable release image from docker before 5pm PT Friday, April 21th, 2023. For testnet, please upgrade your node by 5pm PT Tuesday, April 11th, 2023.
- Your node may pause for 10-30 minutes after reboot for re-indexing, but a resync is not required.
- Please note that the fork is expected to hit on Monday April 24th, 2023 at 9am PT.
- If you are constructing transaction outside of the DeSo API or the DeSo rosetta implementation or signing outside of DeSo Identity, please make sure to upgrade your construction and signing logic.
- DeSo-JS has updated its transaction signing logic to support. If you are using it to support transaction signing, please upgrade to version 1.1.13
- If you would like to implement your own, you may look at the logic in DeSo Identity here or in DeSo JS here.
- If you are constructing transactions on your own, please see the code here for an example of computing the FeeNanos and TxnNonce.
Description
v3.3.0 migrates DeSo's underlying accounting model to an account balance model from a UTXO model.
After this fork, transactions will no longer specify inputs to pay for DESO spent in transactions. Instead, transactions will have the following new fields:
- TxnFeeNanos: a number (uint64) that specifies the amount of DESO (in nanos) that will be spent as fees.
- TxnNonce: a DeSo Nonce object that uniquely identifies this transactions and prevents replay attacks. a DeSo nonce is comprised of two numbers. The first is the ExpirationBlockHeight, which is a block height after which this nonce is no longer valid. The second is the partialID, which is a random number that, together with the ExpirationBlockHeight, uniquely identify this transaction. DeSo nonces are explained more in the Revolution PoS proposal. The main benefits of Deso nonces over existing nonce solutions are the ability to re-order transactions based on fee rates without dropping transactions with lower nonce values and limited storage size due to deletion of expired nonces.
- TxnVersion: This is a new attribute which tells you if a transaction is constructed for balance model or UTXO model. A value of 1 means a transaction is constructed for use with the balance model and a value of 0 means a transaction is constructed for use with the UTXO model.
End-users should not notice any differences after this fork other than reduced transaction fees. Transaction inputs make up about 20+ percent of transaction sizes for non-content storage transactions, such as sending DESO, creating associations, or following users. As a result of replacing transaction inputs with the fee nanos and DeSo Nonce, transacting on DeSo will cost even less.
The transition to an account balance model is one of the first implementation steps towards DeSo's Revolution PoS - you can read more about it here
Additionally, v3.3.0 addresses a bug that results in non-deterministic encoding of transaction spending limits for derived keys.
Finally, v3.3.0 upgrades the version of go from 1.18 to 1.20 and improves memory performance of the test suite.
Auto-generated Release Notes
What's Changed
- Cleanup memory issues in tests by @lazynina in #482
- use mempool.bc as it was before last commit by @lazynina in #483
- only stop mempool if it's not already stopped by @lazynina in #484
- bump go version to 1.20 by @lazynina in #490
- Balance Model by @lazynina in #494
Full Changelog: v3.2.0...v3.3.0
v3.2.0
Description
v3.2.0 addresses a bug related to derived key spending limits for Create Post association transactions as well as adds validations when creating spending limits for associations. v3.2.0 also exposes a getter method for the isDeleted field on BalanceEntry and FollowEntry.
Fork Preparation Checklist
In order to upgrade your node to be compatible with this new version, please complete all steps of the checklist below.
- Reboot your node with the most recent stable release image from docker before 5pm PT Wednesday, March 8th, 2023
Auto-generated Release Notes
What's Changed
- Fix legacy postgres CI. by @mattfoley8 in #474
- Expose IsDeleted on BalanceEntry and FollowEntry for backend filtering by @lazynina in #475
- Associations spending limits improvements. by @mattfoley8 in #480
Full Changelog: v3.1.2...v3.2.0
v3.1.2
Description
v3.1.2 addresses a bug in postgres syncing of associations as well as a bug in transaction construction for authorize derived keys when intending to sign transactions with the owner keys.
What's Changed
- Fix duplicated pg association inserts. by @mattfoley8 in #472
- Only verify access signature if signing with derived key by @lazynina in #470
Full Changelog: v3.1.1...v3.1.2
v3.1.1
Fork Preparation Checklist
In order to upgrade your MAINNET node to be compatible with this new version, please complete all steps of the checklist below
- Reboot your node with the most recent stable release image from docker before 5pm PT Friday, February 3rd, 2023
- Your node may pause for 10-30 minutes after reboot for re-indexing, but a resync is not required.
- Please note that the fork is expected to hit on Monday February 6th, 2023 at 9am PT.
Description
v3.1.1 introduces two new primitives to the DeSo blockchain to mainnet: Associations and Access Groups.
The introduction of associations comes in two forms: user associations and post associations. User associations allow users to create arbitrary links between themselves and other public key. Post associations allow users to create arbitrary links between themselves and any posts on-chain. Associations can be used to implement a wide variety of social features, including - but not limited to - reactions to posts, polls, endorsements, and user role permissioning. There are 4 new transaction types introduced to support associations - CREATE_USER_ASSOCIATION
, DELETE_USER_ASSOCIATION
, CREATE_POST_ASSOCIATION
, and DELETE_POST_ASSOCIATION
.
The introduction of access groups brings the ability to securely share private keys material with other users on chain. Access groups can be used to share encryption keys for group chats or for decrypting encrypted content. Along with access groups, a new transaction type for supporting messages is introduced to replace the old PRIVATE_MESSAGE
transaction type. The NEW_MESSAGE
transaction type adds support for better indexing of DM and group chats as well as migrating consensus fields from extra data into transaction metadata. Access Groups brings two new transactions types on top of NEW_MESSAGE
: ACCESS_GROUP_CREATE
and ACCESS_GROUP_MEMBERS
. ACCESS_GROUP_CREATE
creates a group and ACCESS_GROUP_MEMBERS
adds members to the group.
v3.1.1 also includes the following minor changes:
- Add onlyNFTs and onlyPosts filters to get posts UtxoView functions
- Logging clean up
- Bugfix for requesting an unknown prefix during hypersync
- Bugfix for disconnecting from peer during hypersync
- Improved comments
- Extracting memo from extra data in
AUTHORIZE_DERIVED_KEY
transactions - Bugfix for missing isDeleted check when canceling DAO coin limit orders
- Allow for editing of posts that are NFTs as well as freezing posts such that they are no longer editable
Auto-generated Release Notes
What's Changed since v3.1.0
- Capitalize access group scope constants. by @mattfoley8 in #467
- Change txn string name for access groups by @AeonSw4n in #468
- Ln/mainnet associations and access groups forkheight by @lazynina in #469
Full Changelog: v3.1.0...v3.1.1
What's Changed (copied from v3.1.0)
- Update Minor Error Message in blockchain.go by @davidjwriter in #415
- update readme by @lazynina in #421
- Add onlyNFTS and onlyPosts filter by @erwin-willems in #419
- glog v(2) for non flushDAOCoinLimitOrderEntries and GetPostEntryReaderState by @lazynina in #431
- Add additional logging to process block logic by @triplegreenshell in #436
- Respond with empty chunk for unknown prefixes by @AeonSw4n in #395
- Improve snapshot and hypersync comments by @diamondhands0 in #440
- return if disconnecting from peer in HandleGetSnapshot by @lazynina in #445
- Mf/add association txn types by @mattfoley8 in #420
- add association class/scope type/operation string methods to support backend spending limit endpoints by @lazynina in #449
- Require low-s for signature recovery purposes when recovering derived public key from signature by @lazynina in #452
- Access Groups, Dm Messages, Group Chats by @AeonSw4n in #412
- Update associations txn spending limit metamask str. by @mattfoley8 in #460
- memo comes from DerivedKeyMemoKey, not DerivedPublicKey by @lazynina in #450
- Add isDeleted check when canceling order by @lazynina in #363
- NFTz node url update by @mvanhalen in #429
- Set testnet fork height for AssociationsAndAccessGroupBlockHeight by @lazynina in #466
New Contributors
- @davidjwriter made their first contribution in #415
- @triplegreenshell made their first contribution in #436
Full Changelog: v3.0.2...v3.1.0
v3.1.0
Fork Preparation Checklist
Please note that this version only creates a fork on testnet as mainnet block heights are not set in this release. Mainnet fork heights for the Associations and Access Groups fork will be set and announced in a separate release.
In order to upgrade your testnet node to be compatible with this new version, please complete all steps of the checklist below
- Reboot your node with the most recent stable release image from docker before 1pm PT Tuesday, January 24th, 2023
- Your node may pause for 10-30 minutes after reboot for re-indexing, but a resync is not required.
Description
v3.1.0 introduces two new primitives to the DeSo blockchain on testnet: Associations and Access Groups.
The introduction of associations comes in two forms: user associations and post associations. User associations allow users to create arbitrary links between themselves and other public key. Post associations allow users to create arbitrary links between themselves and any posts on-chain. Associations can be used to implement a wide variety of social features, including - but not limited to - reactions to posts, polls, endorsements, and user role permissioning. There are 4 new transaction types introduced to support associations - CREATE_USER_ASSOCIATION
, DELETE_USER_ASSOCIATION
, CREATE_POST_ASSOCIATION
, and DELETE_POST_ASSOCIATION
.
The introduction of access groups brings the ability to securely share private keys material with other users on chain. Access groups can be used to share encryption keys for group chats or for decrypting encrypted content. Along with access groups, a new transaction type for supporting messages is introduced to replace the old PRIVATE_MESSAGE
transaction type. The NEW_MESSAGE
transaction type adds support for better indexing of DM and group chats as well as migrating consensus fields from extra data into transaction metadata. Access Groups brings two new transactions types on top of NEW_MESSAGE
: ACCESS_GROUP_CREATE
and ACCESS_GROUP_MEMBERS
. ACCESS_GROUP_CREATE
creates a group and ACCESS_GROUP_MEMBERS
adds members to the group.
v3.1.0 also includes the following minor changes:
- Add onlyNFTs and onlyPosts filters to get posts UtxoView functions
- Logging clean up
- Bugfix for requesting an unknown prefix during hypersync
- Bugfix for disconnecting from peer during hypersync
- Improved comments
- Extracting memo from extra data in
AUTHORIZE_DERIVED_KEY
transactions - Bugfix for missing isDeleted check when canceling DAO coin limit orders
Auto-generated Release Notes
What's Changed
- Update Minor Error Message in blockchain.go by @davidjwriter in #415
- update readme by @lazynina in #421
- Add onlyNFTS and onlyPosts filter by @erwin-willems in #419
- glog v(2) for non flushDAOCoinLimitOrderEntries and GetPostEntryReaderState by @lazynina in #431
- Add additional logging to process block logic by @triplegreenshell in #436
- Respond with empty chunk for unknown prefixes by @AeonSw4n in #395
- Improve snapshot and hypersync comments by @diamondhands0 in #440
- return if disconnecting from peer in HandleGetSnapshot by @lazynina in #445
- Mf/add association txn types by @mattfoley8 in #420
- add association class/scope type/operation string methods to support backend spending limit endpoints by @lazynina in #449
- Require low-s for signature recovery purposes when recovering derived public key from signature by @lazynina in #452
- Access Groups, Dm Messages, Group Chats by @AeonSw4n in #412
- Update associations txn spending limit metamask str. by @mattfoley8 in #460
- memo comes from DerivedKeyMemoKey, not DerivedPublicKey by @lazynina in #450
- Add isDeleted check when canceling order by @lazynina in #363
- NFTz node url update by @mvanhalen in #429
- Set testnet fork height for AssociationsAndAccessGroupBlockHeight by @lazynina in #466
New Contributors
- @davidjwriter made their first contribution in #415
- @triplegreenshell made their first contribution in #436
Full Changelog: v3.0.2...v3.1.0
v3.0.2
v3.0.1
Fork Preparation Checklist
This is not a forking change from v3.0.0, so nodes running 3.0.0 will be compatible.
If you have not upgraded to v3.0.0, please follow the below instructions:
In order to upgrade your node to be compatible with this new version, please complete all steps of the checklist below
- Reboot your node with the most recent stable release image from docker before 12pm PT Monday, September 19th, 2022
- Your node may pause for 10-30 minutes after reboot for re-indexing, but a resync is not required.
- If you are running a testnet node, you will need to reboot your node with the most recent stable release image by 10am PT Tuesday, September 13th, 2022
Description
v3.0.1 addresses a bug in which the state of encoder migrations were not being saved to the database. This is not a forking change, but prevents nodes from re-running migrations when a node is rebotted.
Auto-generated Release Notes
What's Changed
Full Changelog: v3.0.0...v3.0.1