fix typographical errors across architecture design records (#24972)
This commit is contained in:
@@ -179,7 +179,7 @@ We must be able to cryptographically derive one address from another one. The de
|
||||
|
||||
```go
|
||||
func Derive(address, derivationKey []byte) []byte {
|
||||
return Hash(addres, derivationKey)
|
||||
return Hash(address, derivationKey)
|
||||
}
|
||||
```
|
||||
|
||||
@@ -319,7 +319,7 @@ Algorithm for complex / composed keys:
|
||||
|
||||
Module addresses: Should module addresses have different size to differentiate it?
|
||||
|
||||
* we will need to set a pre-image prefix for module addresse to keept them in 32-byte space: `hash(hash('module') + module_key)`
|
||||
* we will need to set a pre-image prefix for module addresse to kept them in 32-byte space: `hash(hash('module') + module_key)`
|
||||
* Aaron observation: we already need to deal with variable length (to not break secp256k1 keys).
|
||||
|
||||
Discussion about arithmetic hash function for ZKP
|
||||
@@ -331,7 +331,7 @@ Post quantum signature size
|
||||
|
||||
* Alan suggestion: Falcon: speed / size ratio - very good.
|
||||
* Aaron - should we think about it?
|
||||
Alan: based on early extrapolation this thing will get able to break EC cryptography in 2050 . But that’s a lot of uncertainty. But there is magic happening with recurions / linking / simulation and that can speedup the progress.
|
||||
Alan: based on early extrapolation this thing will get able to break EC cryptography in 2050 . But that’s a lot of uncertainty. But there is magic happening with recursions / linking / simulation and that can speedup the progress.
|
||||
|
||||
Other ideas
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
* 10/14/2022:
|
||||
* Add `ListenCommit`, flatten the state writes in a block to a single batch.
|
||||
* Remove listeners from cache stores, should only listen to `rootmulti.Store`.
|
||||
* Remove `HaltAppOnDeliveryError()`, the errors are propagated by default, the implementations should return nil if don't want to propogate errors.
|
||||
* Remove `HaltAppOnDeliveryError()`, the errors are propagated by default, the implementations should return nil if don't want to propagate errors.
|
||||
* 26/05/2023: Update with ABCI 2.0
|
||||
|
||||
## Status
|
||||
@@ -354,7 +354,7 @@ var Handshake = plugin.HandshakeConfig{
|
||||
MagicCookieValue: "ef78114d-7bdf-411c-868f-347c99a78345",
|
||||
}
|
||||
|
||||
// ListenerPlugin is the base struc for all kinds of go-plugin implementations
|
||||
// ListenerPlugin is the base struct for all kinds of go-plugin implementations
|
||||
// It will be included in interfaces of different Plugins
|
||||
type ABCIListenerPlugin struct {
|
||||
// GRPCPlugin must still implement the Plugin interface
|
||||
|
||||
@@ -45,7 +45,7 @@ Applying it immediately can be viewed as offering greater consensus layer securi
|
||||
|
||||
* For threshold based cryptography, this setting will have the threshold cryptography use the original epoch weights, while consensus has an update that lets it more rapidly benefit from additional security. If the threshold based cryptography blocks liveness of the chain, then we have effectively raised the liveness threshold of the remaining validators for the rest of the epoch. (Alternatively, jailed nodes could still contribute shares) This plan will fail in the extreme case that more than 1/3rd of the validators have been jailed within a single epoch. For such an extreme scenario, the chain already have its own custom incident response plan, and defining how to handle the threshold cryptography should be a part of that.
|
||||
* For light client efficiency, there can be a bit included in the header indicating an intra-epoch slash (ala https://github.com/tendermint/spec/issues/199).
|
||||
* For fairness of deterministic leader election, applying a slash or jailing within an epoch would break the guarantee we were seeking to provide. This then re-introduces a new (but significantly simpler) problem for trying to provide fairness guarantees. Namely, that validators can adversarially elect to remove themself from the set of proposers. From a security perspective, this could potentially be handled by two different mechanisms (or prove to still be too difficult to achieve). One is making a security statement acknowledging the ability for an adversary to force an ahead-of-time fixed threshold of users to drop out of the proposer set within an epoch. The second method would be to parameterize such that the cost of a slash within the epoch far outweights benefits due to being a proposer. However, this latter criterion is quite dubious, since being a proposer can have many advantageous side-effects in chains with complex state machines. (Namely, DeFi games such as Fomo3D)
|
||||
* For fairness of deterministic leader election, applying a slash or jailing within an epoch would break the guarantee we were seeking to provide. This then re-introduces a new (but significantly simpler) problem for trying to provide fairness guarantees. Namely, that validators can adversarially elect to remove themself from the set of proposers. From a security perspective, this could potentially be handled by two different mechanisms (or prove to still be too difficult to achieve). One is making a security statement acknowledging the ability for an adversary to force an ahead-of-time fixed threshold of users to drop out of the proposer set within an epoch. The second method would be to parameterize such that the cost of a slash within the epoch far outweighs benefits due to being a proposer. However, this latter criterion is quite dubious, since being a proposer can have many advantageous side-effects in chains with complex state machines. (Namely, DeFi games such as Fomo3D)
|
||||
* For staking derivative design, there is no issue introduced. This does not increase the state size of staking records, since whether a slash has occurred is fully queryable given the validator address.
|
||||
|
||||
### Token lockup
|
||||
@@ -100,7 +100,7 @@ Then we add methods to the end blockers, to ensure that at the epoch boundary th
|
||||
|
||||
When querying the staking activity of a given address, the status should return not only the amount of tokens staked, but also if there are any queued stake events for that address. This will require more work to be done in the querying logic, to trace the queued upcoming staking events.
|
||||
|
||||
As an initial implementation, this can be implemented as a linear search over all queued staking events. However, for chains that need long epochs, they should eventually build additional support for nodes that support querying to be able to produce results in constant time. (This is do-able by maintaining an auxilliary hashmap for indexing upcoming staking events by address)
|
||||
As an initial implementation, this can be implemented as a linear search over all queued staking events. However, for chains that need long epochs, they should eventually build additional support for nodes that support querying to be able to produce results in constant time. (This is do-able by maintaining an auxiliary hashmap for indexing upcoming staking events by address)
|
||||
|
||||
**Step-3**: Adjust gas
|
||||
|
||||
|
||||
@@ -134,7 +134,7 @@ app.UpgradeKeeper.SetUpgradeHandler("my-plan", func(ctx sdk.Context, plan upgrad
|
||||
Assuming a chain upgrades at block `n`, the procedure should run as follows:
|
||||
|
||||
* the old binary will halt in `BeginBlock` when starting block `N`. In its store, the ConsensusVersions of the old binary's modules are stored.
|
||||
* the new binary will start at block `N`. The UpgradeHandler is set in the new binary, so will run at `BeginBlock` of the new binary. Inside `x/upgrade`'s `ApplyUpgrade`, the `VersionMap` will be retrieved from the (old binary's) store, and passed into the `RunMigrations` functon, migrating all module stores in-place before the modules' own `BeginBlock`s.
|
||||
* the new binary will start at block `N`. The UpgradeHandler is set in the new binary, so will run at `BeginBlock` of the new binary. Inside `x/upgrade`'s `ApplyUpgrade`, the `VersionMap` will be retrieved from the (old binary's) store, and passed into the `RunMigrations` function, migrating all module stores in-place before the modules' own `BeginBlock`s.
|
||||
|
||||
## Consequences
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ The SDK requires the Protobuf comment of the new addition to contain one line wi
|
||||
// Since: cosmos-sdk <version>{, <version>...}
|
||||
```
|
||||
|
||||
Where each `version` denotes a minor ("0.45") or patch ("0.44.5") version from which the field is available. This will greatly help client libraries, who can optionally use reflection or custom code generation to show/hide these fields depending on the targetted node version.
|
||||
Where each `version` denotes a minor ("0.45") or patch ("0.44.5") version from which the field is available. This will greatly help client libraries, who can optionally use reflection or custom code generation to show/hide these fields depending on the targeted node version.
|
||||
|
||||
As examples, the following comments are valid:
|
||||
|
||||
|
||||
@@ -143,7 +143,7 @@ are read on a consistent basis.
|
||||
|
||||
However, this methodology will require developers to implement more types and
|
||||
Msg service metohds which can become burdensome if many parameters exist. In addition,
|
||||
developers are required to implement persistance logics of module parameters.
|
||||
developers are required to implement persistence logics of module parameters.
|
||||
However, this should be trivial.
|
||||
|
||||
### Backwards Compatibility
|
||||
|
||||
@@ -72,7 +72,7 @@ This mechanism can be easily composed with prioritization mechanisms:
|
||||
* we can add extra tiers out of a user control:
|
||||
* Example 1: user can set tier 0, 10 or 20, but the protocol will create tiers 0, 1, 2 ... 29. For example IBC transactions will go to tier `user_tier + 5`: if user selected tier 1, then the transaction will go to tier 15.
|
||||
* Example 2: we can reserve tier 4, 5, ... only for special transaction types. For example, tier 5 is reserved for evidence tx. So if submits a bank.Send transaction and set tier 5, it will be delegated to tier 3 (the max tier level available for any transaction).
|
||||
* Example 3: we can enforce that all transactions of a sepecific type will go to specific tier. For example, tier 100 will be reserved for evidence transactions and all evidence transactions will always go to that tier.
|
||||
* Example 3: we can enforce that all transactions of a specific type will go to specific tier. For example, tier 100 will be reserved for evidence transactions and all evidence transactions will always go to that tier.
|
||||
|
||||
### `min-gas-prices`
|
||||
|
||||
|
||||
Reference in New Issue
Block a user