Releases: regen-network/regen-ledger
v4.0.0
New Features
The new features made available in Regen Ledger v4.0.0
are as follows:
On-Chain Projects
We've updated the core functionality of the ecocredit module to support on-chain projects. This means on-the-ground project developers providing ecosystem services will now be represented as on-chain entities. Information about each project will be stored separate from the credit batch and each credit batch will be linked to the associated project.
In this initial implementation, projects exist within credit classes and only an approved issuer of a given credit class can create a project associated with that credit class. The issuer of the credit class becomes the project admin when the project is created and can then reassign the admin role to any address.
For more information about projects, check out the ecocredit module documentation.
Marketplace Functionality
The ecocredit module includes a new marketplace submodule that supports a simple storefront model for creating sell orders and purchasing credits directly from those sell orders. When a sell order is created, the credits being sold are held in escrow. The default behavior is to have credits auto-retired upon sale but the seller has the option to disable auto-retirement. When a sell order has auto-retirement disabled, the buyer can choose to receive the purchased credits in a retired or tradable state.
Credit owners can only list credits for sale with a token denom that is on an "allowed denom" list specific to the marketplace and controlled through on-chain governance. The allowed denom list will be empty at the time of the upgrade and the community will be able to submit proposals to add allowed denoms following the upgrade. See this discussion for more information.
For more information about marketplace functionality, check out the ecocredit module documentation.
Ecological Data Services
The first version of the data module has arrived and it supports the ability to anchor data on chain, attest to the veracity of anchored data, and to define a data resolver and register anchored data to that resolver. Anchoring data (also known as "secure timestamping") does not store the data on chain but rather a content hash of the data alongside a timestamp that represents the time at which the data was anchored. If the data is altered in any way, the content hash will be different and the data will need to be anchored again as a separate entry.
The initial use case for the data module will be to anchor data specific to each credit class, project, and credit batch, including but not limited to methodologies for credit classes, baseline monitoring reports for projects, and monitoring reports for credit batches. Anchoring data generates a unique deterministic identifier (an IRI) that will then be stored in the metadata field for each credit class, project, and credit batch. The data can optionally be registered to a resolver for convenient public (or private/verified) lookups and attested to as a means of verification.
The intention of this design is to allow for those anchoring datasets to have control over the privacy of their data. Credit issuers and project admins can leverage Regen Ledger for data anchoring and attestation, while keeping the raw datasets associated with those IRIs private if they choose. In a future release, we intend to support merklized hash formats, which would enable individual elements of datasets to be selectively disclosed to the public or to a specific buyer.
For more information about the data module, check out the data module documentation.
Cross-Chain Credits
Over the past few months, we have been working alongside the Toucan team to develop a bridge service that will enable bridging ecosystem service credits to/from the Polygon blockchain. The initial use case of the bridge service will be to bridge Toucan's TCO2 tokens to Regen Ledger for use in our NCT basket.
In support of these efforts, we have added functionality in Regen Ledger v4.0 to support dynamic batch minting that enables bridged assets from the same vintage to be minted to a pre-existing credit batch. Each credit batch will be "sealed" by default so that credit batches with credits issued natively on Regen Ledger can remain immutable.
When credits are bridged from Regen to Polygon, the credits will be cancelled, indicating that the credits have moved to another chain or registry. The bridge service will then read the event emitted from the execution of the bridge message and process the bridge request.
The functionality to support bridging assets is included in Regen Ledger v4.0 but the bridge service itself will be launched separately.
Improvements
Improved Storage
Regen Ledger v4.0 makes use of an ORM storage model implemented within the orm module within Cosmos SDK that acts as an abstraction layer over the existing KV store. The orm module enables the creation of database tables with primary and secondary keys. This abstraction layer provides support for efficient lookups and will improve the velocity of feature development.
Improved API Naming
Regen Ledger v4.0 includes a significant number of minor API changes intended to provide more consistent naming throughout the project and to provide an overall better user experience. The API is defined in proto files that are now available on Buf Schema Registry.
Additional Changes
Credit Batch Denoms
Adding support for on-chain projects required updating the format of the credit batch denom to include the project ID. The credit batch denom was previously formatted to include the credit type abbreviation, the credit class ID, the start and end dates for the monitoring period, and the credit batch sequence number scoped to the credit class. The credit batch denom is now formatted to include the project ID and the credit batch sequence number is now scoped to the project.
An example of a credit batch in Regen Ledger v3.0:
C01-20200101-20210101-001
The first credit batch from the first credit class of the "C" credit type with a start date of January 1st 2020 and an end date of January 1st 2021 (credit class id "C01" and batch sequence "001").
An example of a credit batch in Regen Ledger v4.0:
C01-001-20200101-20210101-001
The first credit batch from the first project of the first credit class of the "C" credit type with a start date of January 1st 2020 and an end date of January 1st 2021 (credit class id "C01", project id "C01-001", and batch sequence "001").
Changelog
For a full list of changes since Regen Ledger v3.0, please see CHANGELOG.md.
Validator Upgrade Guide
An upgrade guide for validators is available at Upgrade Guide v4.0.
Developer Migration Guide
A migration guide for application developers is available at Migration Guide v4.0.
v4.0.0-rc2
Changelog
- b8e1605 test(x/ecocredit): add bridge integration tests (backport #1297) (#1298)
- 75e322e feat(x/ecocredit): default values for new ORM params (#1293) (#1296)
- fb56335 fix(x/ecocredit): improved error for basket queries (#1290) (#1295)
- 936a0a0 fix(types): return nil duration and timestamp (#1292) (#1294)
- 31c1e70 refactor(x/ecocredit): clean up commands and examples (#1288) (#1291)
- 256bc27 fix(x/ecocredit): add basket state migration (backport #1284) (#1287)
- b1c45c6 feat: add issuance date to new credit batches (#1282) (#1286)
- d3d7228 fix(x/ecocredit): basket curator migration (backport #1281) (#1285)
- 7cd4b47 fix(ecocredit): use
open
field when creating batch (#1278) (#1283) - 0922d65 feat(ecocredit): add cancel sell-order command (backport #1274) (#1277)
v4.0.0-rc1
The first release candidate (RC1) for Regen Ledger v4.0.0.
New Features
The new features made available in Regen Ledger v4.0.0
are as follows:
On-Chain Projects
We've updated the core functionality of the ecocredit module to support on-chain projects. This means on-the-ground project developers providing ecosystem services will now be represented as on-chain entities. Information about each project will be stored separate from the credit batch and each credit batch will be linked to the associated project.
In this initial implementation, projects exist within credit classes and only an approved issuer of a given credit class can create a project associated with that credit class. The issuer of the credit class becomes the project admin when the project is created and can then reassign the admin role to any address.
For more information about projects, check out the ecocredit module documentation.
Marketplace Functionality
The ecocredit module includes a new marketplace submodule that supports a simple storefront model for creating sell orders and purchasing credits directly from those sell orders. When a sell order is created, the credits being sold are held in escrow. The default behavior is to have credits auto-retired upon sale but the seller has the option to disable auto-retirement. When a sell order has auto-retirement disabled, the buyer can choose to receive the purchased credits in a retired or tradable state.
Credit owners can only list credits for sale with a token denom that is on an "allowed denom" list specific to the marketplace and controlled through on-chain governance. The allowed denom list will be empty at the time of the upgrade and the community will be able to submit proposals to add allowed denoms following the upgrade. See this discussion for more information.
For more information about marketplace functionality, check out the ecocredit module documentation.
Ecological Data Services
The first version of the data module has arrived and it supports the ability to anchor data on chain, attest to the veracity of anchored data, and to define a data resolver and register anchored data to that resolver. Anchoring data (also known as "secure timestamping") does not store the data on chain but rather a content hash of the data alongside a timestamp that represents the time at which the data was anchored. If the data is altered in any way, the content hash will be different and the data will need to be anchored again as a separate entry.
The initial use case for the data module will be to anchor data specific to each credit class, project, and credit batch, including but not limited to methodologies for credit classes, baseline monitoring reports for projects, and monitoring reports for credit batches. Anchoring data generates a unique deterministic identifier (an IRI) that will then be stored in the metadata field for each credit class, project, and credit batch. The data can optionally be registered to a resolver for convenient public (or private/verified) lookups and attested to as a means of verification.
The intention of this design is to allow for those anchoring datasets to have control over the privacy of their data. Credit issuers and project admins can leverage Regen Ledger for data anchoring and attestation, while keeping the raw datasets associated with those IRIs private if they choose. In a future release, we intend to support merklized hash formats, which would enable individual elements of datasets to be selectively disclosed to the public or to a specific buyer.
For more information about the data module, check out the data module documentation.
Cross-Chain Credits
Over the past few months, we have been working alongside the Toucan team to develop a bridge service that will enable bridging ecosystem service credits to/from the Polygon blockchain. The initial use case of the bridge service will be to bridge Toucan's TCO2 tokens to Regen Ledger for use in our NCT basket.
In support of these efforts, we have added functionality in Regen Ledger v4.0 to support dynamic batch minting that enables bridged assets from the same vintage to be minted to a pre-existing credit batch. Each credit batch will be "sealed" by default so that credit batches with credits issued natively on Regen Ledger can remain immutable.
When credits are bridged from Regen to Polygon, the credits will be cancelled, indicating that the credits have moved to another chain or registry. The bridge service will then read the event emitted from the execution of the bridge message and process the bridge request.
The functionality to support bridging assets is included in Regen Ledger v4.0 but the bridge service itself will be launched separately.
Improvements
Improved Storage
Regen Ledger v4.0 makes use of an ORM storage model implemented within the orm module within Cosmos SDK that acts as an abstraction layer over the existing KV store. The orm module enables the creation of database tables with primary and secondary keys. This abstraction layer provides support for efficient lookups and will improve the velocity of feature development.
Improved API Naming
Regen Ledger v4.0 includes a significant number of minor API changes intended to provide more consistent naming throughout the project and to provide an overall better user experience. The API is defined in proto files that are now available on Buf Schema Registry.
Additional Changes
Credit Batch Denoms
Adding support for on-chain projects required updating the format of the credit batch denom to include the project ID. The credit batch denom was previously formatted to include the credit type abbreviation, the credit class ID, the start and end dates for the monitoring period, and the credit batch sequence number scoped to the credit class. The credit batch denom is now formatted to include the project ID and the credit batch sequence number is now scoped to the project.
An example of a credit batch in Regen Ledger v3.0:
C01-20200101-20210101-001
The first credit batch from the first credit class of the "C" credit type with a start date of January 1st 2020 and an end date of January 1st 2021 (credit class id "C01" and batch sequence "001").
An example of a credit batch in Regen Ledger v4.0:
C01-001-20200101-20210101-001
The first credit batch from the first project of the first credit class of the "C" credit type with a start date of January 1st 2020 and an end date of January 1st 2021 (credit class id "C01", project id "C01-001", and batch sequence "001").
Changelog
For a full list of changes since Regen Ledger v3.0, please see CHANGELOG.md.
Validator Upgrade Guide
Coming soon...
Developer Migration Guide
A migration guide for application developers is available at Migration Guide v4.0.
v4.0.0-beta3
Changelog
- 75ec247 test(x/ecocredit): move regen prefix configuration into module root (#1253)
- 8597f8c build: use mock wasmd for stable build (#1255)
- 75f9ce4 fix(app): fix upgrade handler conditions (#1256)
- e5b2f1f test(x/ecocredit): migrate remaining core tests (#1252)
- 0fa1f22 test(x/ecocredit): migrate update class and project tests (#1251)
- 24a55d5 test(x/ecocredit): migrate create project tests (#1247)
- cb5412b fix(x/ecocredit): fix basket error code and remove unused error (#1254)
- 99c6d17 fix(app): fix upgrade handler to initialize data module (#1248)
- 5830f2f feat(x/ecocredit): add simpler version of
send
command (#1213) - 7c2e904 test(x/ecocredit): migrate create batch tests (#1241)
- 510b640 docs(data): update client docs (#1235)
- 3af10b3 fix(x/ecocredit): fix create class fee if not required and update tests (#1234)
- eb783ea fix(x/ecocredit): fix core message validation and update tests (#1232)
- 93b67aa fix(x/ecocredit): fix core message validation and update tests (#1233)
- 1e3c173 docs: api migration guide (#1189)
v4.0.0-beta2
Changelog
- 6eeabd3 fix(x/ecocredit): bridge and bridge receive message validation (#1231)
- 98524a6 fix(data): return sdkerrors in data module msg-server (#1239)
- b354e5e fix(x/ecocredit): fix escrowed balance and update tests (#1236)
- a7144b8 refactor(x/ecocredit): add batch contract mapping (#1226)
- 94f37dd feat(x/ecocredit): origin tx index scoped to credit class (#1229)
- e887154 chore: update codecov configuration (#1230)
- 0f026aa feat(x/ecocredit): unique reference id at message server level (#1228)
- f51725a docs(ecocredit): update client docs (#1227)
- 9640827 chore(marketplace): return sdkerror in marketplace msg-server (#1221)
- ef4fa05 feat(ecocredit): add credit type by abbreviation query (#1223)
- f3b431e feat(x/data): unique constraints on resolver url and manager (#1219)
- 1f43b58 refactor(x/ecocredit): add note and contract to origin tx (#1225)
- f561931 feat(x/ecocredit): add bridge receive event and update bridge event (#1224)
- 9bdf10d feat(x/ecocredit): buyer cannot be the same as seller (#1218)
- 32b48dd fix(ecocredit): add project reference-id to query response (#1220)
- 4837dab test(data): add genesis simulations (#1208)
- cec010f refactor(x/ecocredit): clean up ecocredit transaction commads (#1199)
- 2800b3c fix(types): positive decimal from string must be finite (#1210)
- 032340f build: fix and update goreleaser build (#1207)
- f21333c docs: add security policy document (#1074)
- ede4a37 feat(app): add regen denom metadata migration (#1209)
- 66dca25 feat(app): add basket denom units migration (#1205)
- 66441cc refactor(x/ecocredit): improve basket denom validation (#1200)
- 9b74887 refactor(x/ecocredit): update core supply and basket field names (#1192)
- d7c114c build: update make commands (#1097)
- 5de1015 fix(basket)!: store basket denom units in ascending order (#1202)
- 1853c2b fix(ecocredit): fix genesis validation to include basket balances (#1195)
- 22d6564 fix(all): enforce UTC where time.Time is used (#1194)
- 22622fb ci: update buf-setup-action version (#1201)
- cb4993b refactor(x/ecocredit): basket query service revisions (#1198)
- 46af1a4 refactor(x/ecocredit): marketplace query service revisions (#1197)
- 22d3b71 feat(ecocredit): BridgeReceive (#1174)
- da06d47 test(x/ecocredit): update unit test setup for generate addresses (#1182)
- 322ab12 fix(x/ecocredit): fix class sequence migration (#1188)
- 2c0dbd6 docs: update swagger documentation (#1154)
- 8ef300a fix(x/ecocredit): charge single basket fee and migrate param (#1184)
- 97c30d6 refactor(x/data): update query service and commands (#1156)
- eb742da chore: fix balance migrations (#1185)
- f219544 refactor(x/ecocredit): update core proto comments and fields (#1161)
- 1f7fa5a chore(ecocredit): ecocedit cli audit updates (#1176)
- 605e4cc fix: fix ecocredit migrations (#1180)
- ba778bb fix(x/ecocredit): remove exponent from basket create command (#1177)
- 17dda24 chore(ecocredit/core): keeper method audit (#1160)
- 8e1914f chore(ecocredit/marketplace): state machine audit updates (#1170)
- c874e24 feat(x/ecocredit): query all projects with pagination (#1178)
- b90aa21 refactor(x/ecocredit): clean up queries and endpoints (#1168)
- cf969fd fix(ecocredit): close iterators (#1173)
- b1dee38 feat(ecocredit/core): state machine and cli audit updates (#1155)
- eb840ba refactor(x/ecocredit): burn basket fee and remove dist keeper (#1167)
- 7c6081e test(x/ecocredit): marketplace update acceptance tests (#1134)
- 7e7d423 test(x/ecocredit): marketplace buy acceptance tests (#1122)
v4.0.0-beta1
Changelog
- 2151ad1 refactor(x/ecocredit): consistent address field names (#1153)
- f5c7cd9 build(deps): Bump eventsource from 1.1.0 to 1.1.1 in /docs (#1145)
- 8eea65d fix: duplicate vesting account tx command (#1149)
- faeb38a fix(x/ecocredit): fix create batch issuance with same recipient (#1144)
- 530130f feat(ecocredit): add projects by admin query (#1141)
- 1abcee8 feat(app): add upgrade handlers (#1121)
- abd6de2 feat(ecocredit): add simulations (#1130)
- d5b2760 feat(ecocredit/core): fix credit batch issuer migration (#1150)
- 18e2471 feat(x/ecocredit): add buy direct and cancel events (#1148)
- 22fcf03 feat(x/data): query resolvers by url and return resolver info (#1132)
- d8119ce docs(x/data): Correct documentation for define-resolver and register-resolver cli commands (#1146)
- d393056 docs(x/data): update module documentation (#975)
- a728a3c test(x/ecocredit): marketplace cancel acceptance tests (#1140)
- e326959 fix(x/ecocredit): deprecate basket exponent and use precision (#1135)
- 12969b5 fix(ecocredit/marketplace): nil expirations no longer pruned (#1115)
- eb54e96 refactor(x/ecocredit): consistent amount and key field names (#1123)
- 852fb8d test(x/ecocredit): marketplace sell acceptance tests (#1120)
- 2eca535 build: update app module version to v4 (#1131)
- 6efcf21 refactor(x/ecocredit): consistent origin tx and separate mint events (#1125)
- 2dfc570 fix(x/ecocredit): fix orderbook proto and run proto-format (#1129)
- 2e66163 feat(ecocredit): query batches and update batch commands (#1116)
- 643fb97 refactor(x/data): remove unique constraint on resolver url (#1128)
- 94034cc feat(ecocredit): custom bridging support for cancelling credits (#1101)
- c2eff89 refactor: use ParseDate in ecocredit and data module (#1118)
- 6489583 test(x/ecocredit): basket create acceptance tests (#1100)
- 83a3993 test(x/ecocredit): clean up basket acceptance tests (#1117)
- 1165385 feat(ecocredit): add tx origin duplication check to
CreateBatch
andMintBatchCredits
(#1112) - 9451b49 test(ecocredit): buy direct batch integration test (#1103)
- 66ca147 test(ecocredit): add update project admin integration test (#1102)
- 8fdf355 feat(x/data): query iri by hash cli and rest endpoint (#1107)
- 484eeca test(ecocredit): update project metadata integration test (#1105)
- 7c1fb1d test(ecocredit): add buy scenario to integration test (#1079)
- 334885c test(ecocredit): allowed denoms query integration tests (#1106)
- 9475804 build: update swagger generation (#1096)
- c1d2461 test(x/ecocredit): basket take acceptance tests (#1098)
- 946887f feat(marketplace): Add query cmd for AllowedDenoms (#1099)
- 0e20767 feat(ecocredit): add batch denom migration (#1095)
- 8190c36 feat(ecocredit): add reference id to project (#1094)
- 5011d93 test(ecocredit): add buy-direct cli integration test (#1078)
- 3f66709 refactor(ecocredit):
GetParamSet
->Get
(#1064) - f653b63 docs: add release process document (#1073)
- fae569f test(x/ecocredit): basket put acceptance tests (#1065)
- 3841ec5 docs(x/ecocredit): update buf schema links (#1077)
- 5111e3c refactor(x/ecocredit): reduce event fields and duplication (#1086)
- 4af5dbb docs: install regen using pre-built packages (#1085)
- 95a871e refactor(x/ecocredit): remove info suffix from queries (#1090)
- ea43f14 feat(ecocredit): allow denom proposal handler (#1072)
- 8231250 chore: update all relevant go.mod's to Go 1.18 (#1088)
- cfd8d1d chore: remove deprecated orm package (#1076)
- 9f915eb refactor(ecocredit): Update basket queries and curator address in state (#1056)
- 4bece1c refactor(ecocredit): replace hard coded genesis tests (#1055)
- 646a04d feat(ecocredit): add credit types state migration (#1061)
- 2b08585 test(ecocredit/core): add project update simulations (#1062)
- e4baa84 refactor(x/ecocredit): update project id and batch denom (#1046)
- b237a50 refactor(ecocredit): remove unnecessary fields in events (#1044)
- c160e04 feat(ecocredit/core): SealBatch server impl (#1060)
- 429d1f2 feat(ecocredit/core): dynamic batch minting (#1059)
- 064955a refactor(ecocredit): delete v1alpha2 types (#1063)
- 4ecc793 fix(ecocredit/marketplace): correctly set supply during BuyDirect (#1069)
- 157181f test: fix and disable intermittent tests (#1070)
- 7d75fe3 docs: fix url rewrite with clean urls (#1057)
- ee54c46 fix(x/ecocredit): readable marketplace query responses (#1054)
- e4e9a15 refactor(ecocredit): remove project prefix from project msg fields (#1052)
- 4cccb72 feat(x/data): add events for data resolver (#1051)
- 2a5769a refactor(ecocredit): remove credit types from params (#1043)
- dde7c32 feat(ecocredit): add class-issuers cli command (#1033)
- 5de0d92 refactor(x/ecocredit): migrate ecocredit server to submodules (#995)
- 002a876 refactor(x/ecocredit): migrate ecocredit utils to core (#1048)
- d5dd64d refactor(x/ecocredit): readable ecocredit query responses (#1022)
- a67c387 feat(ecocredit): add marketplace simulations (#986)
- 75558eb chore: move cmd into tx.go (#1019)
- b2dee96 feat(ecocredit/marketplace): buy direct cli commands (#1008)
- 0ad686d feat(x/ecocredit): credit type gov handler (#1015)
- 5819dcb refactor(ecocredit): remove info suffix from state proto messages (#1040)
- 44a3276 refactor(ecocredit): update
BatchInfo.BatchDenom
toBatchInfo.Denom
(#1039) - 9aa86c4 refactor(ecocredit): migrate core invariants to use v1 types (#1017)
- 5bd2f48 refactor(ecocredit/client): migrate CLI integration tests to v1 (#1026)
- 20852fc refactor(x/ecocredit): update location to jurisdiction (#1020)
- b46c384 fix(ecocredit/core): wrong key type in class lookup (#1038)
- c2ba973 feat: add events to project update methods (#1037)
- 7ec6a35 refactor(x/ecocredit): consistent use of id, key, and abbreviation (#1021)
- f23e20a test(x/ecocredit): fix intermittent race condition (#1018)
- 0acc9b7 feat(ecocredit/core): UpdateProjectAdmin/Metadata server impls (#1010)
- 93bd343 test(x/data): add acceptance tests (#994)
- e7f79fb build(deps): Bump async from 2.6.3 to 2.6.4 in /docs (#1027)
- b21763e refactor(ecocredit): update genesis import & export to use v1 api (#977)
- 0a35fad feat(ecocredit): add state migrations (#957)
- 52061e8 refactor(x/data): consistent use of content hash (#1014)
- 470f881 feat(ecocredit/core): UpdateProjectAdmin/Metadata Msg implementations (#1009)
- 2818838 refactor(ecocredit): migrate client to target v1 (#901)
- e3816ca test(x/ecocredit): fix create class test (#1011)
- f70453c build: use go generate for mocks (#998)
- 20783ad feat(x/ecocredit): implement MsgMintBatch and MsgSealBatch interfaces (#991)
- 43fe06e refactor(ecocredit/marketplace): BuyDirect (#967)
- 404cc06 feat(math): adding Dec.SdkIntTrim (#988)
- 21d4003 chore: add duplicate issuer validation (#1001)
- 987d33b mod tidy (#1000)
- b1a3d01 feat(data): add import & export genesis (#978)
- fe50121 refactor(ecocredit): update core simulations to use v1 api (#928)
- 24117f8 feat(x/data): attest to multiple pieces of data (#971)
- 2bbebf8 feat(data): add simulations (#949)
- aec0b73 feat(ecocredit/marketplace): AllowAskDenom parameter (#969)
- 840ba08 refactor(x/data): update data module to use orm (part 2) (#970)
- 5af6387 refactor: timestamp utils (#985)
- bb2f17c feat(x/ecocredit): update batch proto to support dynamic minting (#937)
- 4c52522 docs: fix broken buf schema registry links (#974)
- ef344a9 chore(ecocredit): remove alpha params (#968)
- e402949 refactor(ecocredit/marketplace): remove EscrowedAmount from BatchSupply (#964)
- 639090b fix: use legacy params (#966)
- 67035ff refactor(x/data): update data module to use orm (part 1) (#956)
- 9e41e6a feat(ecocredit/core): query batches by issuer (#955)
- f39b517 refactor(ecocredit/basket): wire core submodule into baskets (#935)
- 29c8666 feat(ecocredit/core): query classes by admin address (#954)
- 2852972 docs: add instructions to execute statesync setup script for Redwood (#947)
- 0b25aec docs: Update README.md links to docs (#958)
- 44af8d1 feat(marketplace):
Buy
ORM (#899) - ae0b46a test(x/ecocredit/basket): put date acceptance tests (#902)
- d0977e6 test(x/data): update iri tests and remove duplicates (#950)
- 29cb764 build(deps): Bump minimist from 1.2.5 to 1.2.6 in /docs (#943)
- 90af8c3 feat(data): add amino JSON signing support (#953)
- c086596 feat(x/ecocredit): query all credit balances based on address (#942)
- a8b3e14 chore: update editorconfig (#952)
- 7d43caa refactor(x/data): remove oneof and update validation (#946)
- 70cba99 refactor(x/ecocredit): remove orm replace directives (#944)
- 92469b3 chore: update make proto-gen, reformat and regenerate (#951)
- 1e86e23 chore: add nil check (#948)
- 1318d53 feat(ecocredit/core): add issuance date to BatchInfo (#936)
- 53ac77b feat(x/data): query by hash and convert hash and iri (#938)
- bc40469 fix(x/ecocredit): cancel sell order msg (#945)
- 909e051 feat(marketplace): update sell orders ORM (#903)
- 907d8c1 feat(marketplace): cancel sell order (#891)
- db2a640 docs: add instructions to execute statesync script (#939)
- 70f0264 fix: data and ecocredit gas consumption (#934)
- 1df8b21 feat(ecocredit): specify fee in
CreateClass
(#912) - 955e8be docs(x/ecocredit): add basket and update content (#923)
- fc3df53 refactor(x/data): update sign to attest (#927)
- b202c37 feat(marketplace):
QueryBuyOrders
ORM (#919) - 88a4b31 feat(ecocredit): wire up new submodules (#913)
- 8d19ee6 feat(marketplace):
SellOrders
query & sub-queries (#917) - 07371fb docs: update layout and structure (#916)
- 869defa feat(marketplace):
QueryBuyOrder
ORM (#918) - 1a063a3 docs(x/data): update module overview (#915)
- 3535b13 docs(x/ecocredit): update module overview (#914)
- 2b2463d docs(commands): auto-generate cli documentation (#908)
- f825896 docs: update version and node endpoints (#910)
- 6661ec4 chore: copy sdk.Msg impls for v1 (#911)
- ab646...
v3.0.0
Regen Ledger v3.0.0
Regen Ledger v3.0.0
adds basket functionality to the ecocredit module.
Baskets
Regen Ledger v3.0.0
updates the ecocredit module to include basket functionality, enabling the aggregation of heterogeneous ecosystem service credits into baskets. Credits from different credit classes and batches that meet a defined criteria can be deposited within a basket in exchange for basket tokens. The basket tokens are fully fungible with other tokens from the same basket, and are tracked in the standard bank module, which means these assets will be made visible in wallets like Keplr, and also able to be transferred via IBC to other chains in the Cosmos ecosystem. Each basket token can later be redeemed for an underlying ecocredit from the given basket, and the ecocredits received may be retired by the account receiving them (for offsetting emissions).
Regen Ledger v3.0.0
includes a scoped-down, minimum-viable basket implementation with the intention to bring IBC compliant carbon credits to the interchain. For more information about the full specification for basket functionality, see the basket specification.
The MVP version of baskets proposed in Regen Ledger v3.0.0
differs from the full specification in the RFC above in that:
BasketCritera
is restricted to only allow for:- A credit type
- A list of credit classes
- A recency filter represented either as a fixed minimum batch start date, or a rolling recency window (e.g. batch start date must be within the last 6 months)
- Retrieving ecocredits from a basket can only be done via
Take
, notPick
. All calls ofTake
will always retrieve the oldest ecocredits first (by batch start date), ensuring the basket flushes out old credits over time.
Changelog
For a full list of changes since regen-ledger v2.1.0
, please see the CHANGELOG.md
v3.0.0-rc2
v3.0.0-rc1
Regen Ledger v3.0.0-rc1
Regen Ledger v3.0.0
adds basket functionality to the ecocredit module.
Baskets
Regen Ledger v3.0.0
updates the ecocredit module to include basket functionality, enabling the aggregation of heterogeneous ecosystem service credits into baskets. Credits from different credit classes and batches that meet a defined criteria can be deposited within a basket in exchange for basket tokens. The basket tokens are fully fungible with other tokens from the same basket, and are tracked in the standard bank module, which means these assets will be made visible in wallets like Keplr, and also able to be transferred via IBC to other chains in the Cosmos ecosystem. Each basket token can later be redeemed for an underlying ecocredit from the given basket, and the ecocredits received may be retired by the account receiving them (for offsetting emissions).
Regen Ledger v3.0.0
includes a scoped-down, minimum-viable basket implementation with the intention to bring IBC compliant carbon credits to the interchain. For more information about the full specification for basket functionality, see the basket specification.
The MVP version of baskets proposed in Regen Ledger v3.0.0
differs from the full specification in the RFC above in that:
BasketCritera
is restricted to only allow for:- A credit type
- A list of credit classes
- A recency filter represented either as a fixed minimum batch start date, or a rolling recency window (e.g. batch start date must be within the last 6 months)
- Retrieving ecocredits from a basket can only be done via
Take
, notPick
. All calls ofTake
will always retrieve the oldest ecocredits first (by batch start date), ensuring the basket flushes out old credits over time.
Changelog
For a full list of changes since regen-ledger v2.1.0
, please see the CHANGELOG.md
v3.0.0-beta1
Changelog
- 13e8edf feat: migration handler for v2.2 (#775)
- 971a875 feat!: basket name update (#776)
- 398824e test(x/ecocredit): basket integration test (#771)
- 1cb3728 feat: backport basket proto updates (#772)
- df802ea feat(x/ecocredit): basket genesis (#764)
- 3cd5932 feat(x/ecocredit): Msg Create implementation (#762)
- eff0e4a feat(x/ecocredit): codec and server registration (#765)
- ac73e6f feat(x/ecocredit): add create-basket command (#754)
- 7ac5f1a feat: add add-to-basket cli command (#750)
- 4f3888d feat: baskets cli command (#767)
- eb11867 feat: add take-from-basket command (#749)
- 02337f8 feat(x/ecocredit): basket query cli cmd (#766)
- 97e5c22 feat(x/ecocredit): QueryBasketBalances (#763)
- 4d1da1d feat(x/ecocredit): implement basket MsgServer.Take (#746)
- 452ec03 feat(x/ecocredit): Put basket server method (#758)
- 2f8412b feat(x/ecocredit): add Basket query (#753)
- 4759669 feat(x/ecocredit): query baskets (#761)
- 7118250 feat: add basket balance queries (#760)
- dd9c188 feat: basket window integration (#757)
- 9332f40 feat(x/ecocredit): add BasketBalance query (#751)
- 5d747dc docs(x/ecocredit): clarify basket exponent usage to eliminate rounding (backport #752) (#755)
- b0148d7 feat(basket): implement sdk.Msg and LegacyMsg for MsgCreate (#745)
- 3d799ed feat(x/ecocredit): sdk.Msg for MsgTake (#748)
- 85d642c feat(x/ecocredit): sdk.Msg impl for MsgPut (#747)
- d6c77c2 feat: backport proto generation (#743)
- f520f67 fix(x/ecocredit): broken integration tests from BasketCreationFee param (#741)
- e9b5ade feat(x/ecocredit): minimal baskets ORM + keeper setup (#734)
- 198373e feat(x/ecocredit): backport basket codegen (#737)
- 2475927 fix: update swagger-gen to include ibc-go swagger docs (backport #666) (#685)