Compare commits

..

3 Commits

Author SHA1 Message Date
Callum Waters
3fc7e52480 Merge branch 'master' into callum/rfc-lib 2022-09-07 10:48:47 +02:00
Callum Waters
0d47a7b4ce Apply suggestions from code review
Co-authored-by: Thane Thomson <connect@thanethomson.com>
2022-08-02 15:25:46 +02:00
Callum Waters
d49db0ab1b rfc-022 2022-07-25 10:09:51 +02:00
10 changed files with 73 additions and 20 deletions

View File

@@ -28,7 +28,7 @@ jobs:
- name: Install generator dependencies
run: |
apk add --no-cache make bash git npm
- uses: actions/checkout@v4
- uses: actions/checkout@v3
with:
# We need to fetch full history so the backport branches for previous
# versions will be available for the build.
@@ -37,7 +37,7 @@ jobs:
run: |
git config --global --add safe.directory "$PWD"
make build-docs
- uses: actions/upload-artifact@v4
- uses: actions/upload-artifact@v3
with:
name: build-output
path: ~/output/
@@ -49,8 +49,8 @@ jobs:
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
- uses: actions/checkout@v3
- uses: actions/download-artifact@v3
with:
name: build-output
path: ~/output

View File

@@ -224,7 +224,7 @@ build-docs:
@cd docs && \
while read -r branch path_prefix; do \
( git checkout $${branch} && npm ci --quiet && \
VUEPRESS_BASE="/$${path_prefix}/" NODE_OPTIONS="--openssl-legacy-provider" npm run build --quiet ) ; \
VUEPRESS_BASE="/$${path_prefix}/" npm run build --quiet ) ; \
mkdir -p ~/output/$${path_prefix} ; \
cp -r .vuepress/dist/* ~/output/$${path_prefix}/ ; \
cp ~/output/$${path_prefix}/index.html ~/output ; \

View File

@@ -36,17 +36,20 @@ Please do not depend on master as your production branch. Use [releases](https:/
Tendermint has been in the production of private and public environments, most notably the blockchains of the Cosmos Network. we haven't released v1.0 yet since we are making breaking changes to the protocol and the APIs.
See below for more details about [versioning](#versioning).
In any case, if you intend to run Tendermint in production, we're happy to help.
You can contact us [over email](mailto:hello@newtendermint.org) or [join the
chat](https://discord.gg/gnoland).
In any case, if you intend to run Tendermint in production, we're happy to help. You can
contact us [over email](mailto:hello@interchain.io) or [join the chat](https://discord.gg/cosmosnetwork).
More on how releases are conducted can be found [here](./RELEASES.md).
## Security
To report a security vulnerability, please [email us](mailto:security@newtendermint.org).
To report a security vulnerability, see our [bug bounty
program](https://hackerone.com/cosmos).
For examples of the kinds of bugs we're looking for, see [our security policy](SECURITY.md).
We also maintain a dedicated mailing list for security updates. We will only ever use this mailing list
to notify you of vulnerabilities and fixes in Tendermint Core. You can subscribe [here](http://eepurl.com/gZ5hQD).
## Minimum requirements
| Requirement | Notes |
@@ -136,9 +139,9 @@ We keep a public up-to-date version of our roadmap [here](./docs/roadmap/roadmap
## Join us!
The development of Tendermint Core was led primarily by All in Bits, Inc. The
Tendermint trademark is owned by New Tendermint, LLC. If you'd like to work
full-time on Tendermint2 or [gno.land](https://gno.land), [we're
hiring](mailto:hiring@newtendermint.org)!
Tendermint Core is maintained by [Interchain GmbH](https://interchain.berlin).
If you'd like to work full-time on Tendermint Core, [we're hiring](https://interchain-gmbh.breezy.hr/)!
Funding for Tendermint Core development comes primarily from the [Interchain Foundation](https://interchain.io),
a Swiss non-profit. The Tendermint trademark is owned by [Tendermint Inc.](https://tendermint.com), the for-profit entity
that also maintains [tendermint.com](https://tendermint.com).

View File

@@ -106,7 +106,7 @@ module.exports = {
}
],
smallprint:
'The development of Tendermint Core was led primarily by All in Bits, Inc. The Tendermint trademark is owned by New Tendermint, LLC.',
'The development of Tendermint Core is led primarily by [Interchain GmbH](https://interchain.berlin/). Funding for this development comes primarily from the Interchain Foundation, a Swiss non-profit. The Tendermint trademark is owned by Tendermint Inc, the for-profit entity that also maintains this website.',
links: [
{
title: 'Documentation',

View File

@@ -31,4 +31,3 @@ To find out about the Tendermint ecosystem you can go [here](https://github.com/
## Contribute
To contribute to the documentation, see [this file](https://github.com/tendermint/tendermint/blob/master/docs/DOCS_README.md) for details of the build process and considerations when making changes.

View File

@@ -247,8 +247,8 @@ Similarly, you could put the commands in a file and run
Want to write an app in your favorite language?! We'd be happy
to add you to our [ecosystem](https://github.com/tendermint/awesome#ecosystem)!
TODO link to bounties page.
See [funding](https://github.com/interchainio/funding) opportunities from the
[Interchain Foundation](https://interchain.io/) for implementations in new languages and more.
The `abci-cli` is designed strictly for testing and debugging. In a real
deployment, the role of sending messages is taken by Tendermint, which

View File

@@ -59,5 +59,6 @@ sections.
- [RFC-019: Configuration File Versioning](./rfc-019-config-version.md)
- [RFC-020: Onboarding Projects](./rfc-020-onboarding-projects.rst)
- [RFC-021: The Future of the Socket Protocol](./rfc-021-socket-protocol.md)
- [RFC-022: Structuring Tendermint as a Library](./rfc-022-structuring-as-a-library.md)
<!-- - [RFC-NNN: Title](./rfc-NNN-title.md) -->

View File

@@ -0,0 +1,50 @@
# RFC 022: Structuring Tendermint as a Library
## Changelog
- 25 July 2022: Initial draft (@cmwaters)
## Abstract
How do we want our users to use Tendermint? How does Tendermint best deliver it's unique value proposition in a way that moves it towards being the leading generalizable BFT consensus engine? This document aims to explore these themes mainly through comparison of Tendermint as a library or Tendermint as a service. The RFC focuses just on product direction and offers no concrete technical solutions although decisions here will dictate future technical discussions as we look to improve the ergonomics of the repository.
## Background
The word "library" is not used once in the codebases' documentation, however, it is understood that this was perhaps the intention of the original authors. As the codebase expanded and adoption grew, there became a need to distinguish between private and public APIs to offer some stability whilst still developing the software. This culminated in [ADR 060](https://github.com/tendermint/tendermint/blob/master/docs/architecture/adr-060-go-api-stability.md) which internalized the majority of functionality behind an `internal` directory. This reflected the thinking at the time which endeavoured to present Tendermint as a simple service that one could run without having to worry about what was really happening. For those that had business concerns that required more than what was offered, they had to fork the codebase as is evident with [Celestia](https://github.com/celestiaorg/celestia-core). While there have been numerous discussions over the past years, nothing has been explicitly documented as this RFC aims to do.
## Discussion
In simpler terms, there are two models Tendermint can look to follow: A library or a service.
### Definitions
Given that these two words: library and service are already overloaded as it is, I want to quickly draw out what these paths actually entail. When talking about a library, we want to structure Tendermint to be composable. Users should be able to take the parts they want and replace or build out the parts that are new and easily fit them together. When talking about a service, we're talking about a simple, straight out of the box, batteries-included consensus as a service: Tendermint takes in bytes and ensures that multiple machines replicate it withstranding a degree of arbitrary failures.
### Tradeoffs
When offering Tendermint as a service:
- We're striving to abstract away the complexity and expose a simple surface for users to build on top of.
- We minimize configurability by trying to make reasonable estimations about how the software is used so one can simply "plug and play".
As a service:
- We have a small surface area to maintain and can hide messy internals. It makes it easier to change internal components and offer strong API stability guarantees.
- We're happy with forks. We aim to appease 80% of the users and support forking as a strategy for custom Tendermint implementations.
When offering Tendermint as a library:
- We're focusing on customizability, extensability and composability.
- We want our users to take more time to understand how Tendermint works
As a library:
- We have to be wary of cross-component security concerns. We need to be very explicit about the invariants within each module.
- Tendermint has already been broken down into separate modules based on functionality so there already exists a good starting point with which to build into a library.
- We are committing to more documentation/tutorials and general support for users of the library.
- Tendermint is better aligned with the Cosmos DNA which favours notions of soverignty and the ability to make whatever application specific blockchain you can think of.
- We reduce the likelihood of forking but understand the risk that failure to correctly abstract out components may frustrate users.
- We think modules is a good way to encourage others to innovate that may upstream into mainline Tendermint.
While presenting these as two options, it's possible that we opt to do both but we must understand the extra work that this entails.

View File

@@ -4,4 +4,4 @@ order: false
# Validators
_This file has moved to the [node section](../nodes/validators.md)._
This file has moved to the [node section](../nodes/validators.md).

View File

@@ -1,4 +1,4 @@
master master
v0.33.x v0.33
v0.34.x v0.34
v0.35.x v0.35
master master