Skip to content

Instantly share code, notes, and snippets.

Avatar

Aaron Craelius aaronc

View GitHub Profile
@aaronc
aaronc / example.dot
Last active May 10, 2022
good container graphviz output
View example.dot
digraph "" {
graph [bb="0,0,1990.1,405.6"];
node [color=black,
label="\N",
shape=ellipse
];
subgraph cluster_b {
graph [bb="1075.8,136,1473.8,212.8",
label="Module: b",
lheight=0.23,
@aaronc
aaronc / schema.sql
Last active Nov 23, 2021
tendermint/cosmos postgres index
View schema.sql
CREATE TABLE chain
(
num smallserial primary key,
chain_id text not null unique
);
CREATE TABLE block
(
chain_num smallint not null references chain,
height BIGINT not null,
View proto interface.md

Observations

  • for binary encoding we almost always want protobuf
  • for json we almost always want amino for querier backwards compatibility (protobuf json will happen elsewhere)
  • in some cases we want to allow amino as a fallback for interfaces

Marshaler

type Marshaler interface {
@aaronc
aaronc / PROTO3_CER.md
Last active Jan 10, 2020
Protobuf Canonical Encoding Rules
View PROTO3_CER.md

proto3 Canonical Encoding Rules (CER)

This defines a set of encoding rules for Protocol Buffers 3 (proto3) for serializing messages deterministically such that the serialized form is suitable for signing and encoding in cryptographic attestations (ex. Merkle trees). Similar to ASN.1 and Cap'n Proto, a set of "canonical encoding rules" (CER) is used to define a canonical encoding where the basic proto3 specification does not do so. In this sense, the default protocol buffers specification provides a set of "basic encoding rules" which are not deterministic, and we extend that specification to support deterministic encoding for cryptographic use cases.

@aaronc
aaronc / proposal.md
Created Sep 26, 2019
Amino compatibility "amino-compat" proposal
View proposal.md

Motivation

Proposal

@aaronc
aaronc / proposal.md
Created Sep 26, 2019
An alternate upgrade coordination mechanism
View proposal.md

Motivation

Our current upgrade module uses the gov module to trigger a planned upgrade, this has a few potential downsides:

  • if a hot-fix release is needed, the network needs to wait for the full voting window
  • if validators need to postpone an upgrade after the governance vote due to some issues found in testing, they can't do that
  • no built-in way to abort an upgrade in case the upgrade handler fails

Proposal

View regen-test-1001-amazonas-upgrade.json
{
"binaries": {
"darwin/amd64": "https://github.com/regen-network/regen-ledger/releases/download/v0.5.0/regen-ledger-v0.5.0-darwin-amd64.tar.xz?checksum=sha256:1dc22afb1ae71c11971cac7367d9f525e66ef1b7e7d8c039b6acd28de45a452a",
"linux/amd64": "https://github.com/regen-network/regen-ledger/releases/download/v0.5.0/regen-ledger-v0.5.0-linux-amd64.tar.xz?checksum=sha256:9e8a5b837fe94190ffa415304d2004fee74bc6315e4417840b13053237da3e19"
}
}
View keybase.md

Keybase proof

I hereby claim:

  • I am aaronc on github.
  • I am aaroncr (https://keybase.io/aaroncr) on keybase.
  • I have a public key ASCD3PDnlWKAdlNdbqIhut64-s5Bqh_BOMbdEFSNobkTzwo

To claim this, I am signing this object:

View blog.md

Hackatom Berlin

Regen Network, and our compatriots from TruStory, IOV, Althea and Wallet Connect combined forces to become Team Gaians for the Berlin HackAtom. This blog will review what we created and what it can be used for.

Our team focused on hacking towards a clear use case: user friendly participation in smart contracts about ecological health. In order to create usable functionality for this the team had to overcome some key challenges: create a smart contracting framework for the Cosmos SDK and improved key management.

And that is exactly what was accomplished. In 36 hours, the team pulled together an incredibly powerful and flexible, smart contracting module using WebAssembly (Wasm) and key management modules that interact to create platform that is more powerful and robust than Ethereum, and built in the Cosmos SDK, making interoperability with other chains easy.

Let’s walk through the functionality that was built using the use-case we considered - a simple three-party contract for Regen Netw

@aaronc
aaronc / key-management.md
Last active Oct 31, 2022
Key groups, msg and fee delegation from the Gaians team at Hackatom Berlin 2019
View key-management.md

Fee delegation

The delegation module also allows for fee delegation via some changes to the AnteHandler and StdTx. The behavior is similar to that described above for Msg delegations except using the interface FeeAllowance instead of Capability:

// FeeAllowance defines a permission for one account to use another account's balance
// to pay fees