palomachain / paloma Goto Github PK
View Code? Open in Web Editor NEWThe fast blockchain messenger protocol
License: Apache License 2.0
The fast blockchain messenger protocol
License: Apache License 2.0
We need to define a message which includes the smart contract address, payload and coins, along with the message’s unique ID. This message is to be used for the signing queue.
This differs from the “public” message where users define their jobs.
There are a couple of usecases we need to solve for message signing from the runners perspective:
Once user submits a message for execution, we need to have a way for all validators to get new messages that need to get signed, and a way for them to submit their signatures.
The validators also need an endpoint to get messages which have reached a consensus and are ready for execution.
This is a top level ticket for runner configuration. Users should be able to customize their runners via configurations. Details should come in separate tickets.
As Volume, we want to have the right slashing parameters in place so that malicious behavior on the validator side is prevented, while risk for them is low enough to they remain engaged and are motivated to stake.
As a User I want to have control over my scheduled messages so that I can make sure my messages run optimally.
Acceptance Criteria
1. Submission of the new jobs
2. Pause
3. Resume
4. Modify
5. Delete
Define a message that’s used to update validator sets on our CosmWasm smart contract. The message needs to have a validator’s address and their staking power (in absolute terms).
Given that we are doing polling from the runner’s perspective, we need to have the (so called) main loop, in which we can query messages for signing & broadcasting. This is the beating heart of a runner.
We also need to organize code a bit better. So far, the code has been written mostly as something that we are using to test the idea.
As testing is really important, we don't want to submit any PR that breaks tests. We also don't want to merge broken PRs.
go test
running on every branchCurrently, we are using "raw" BroadcastTX when communicating with chains from the runner instance. We should take the GRPC server&client proto definition instead and communicate with the server like that. Same goes for running queries.
Ability to
We need to communicate with the Terra chain from within our runners which are a part of a FedEx chain (a sidecar process/goroutine).
We need to have a chain to query and broadcast transactions over the wire to other chain.
Given that there already exists a library that does this (LENS, by Strangelove) we don’t need to implement this ourselves.
We need to build a tool in the runner to query messages that need to be signed by the runner itself so that consensus can be reached. We also need to submit those signatures back to the chain to store them.
Currently, when running tests, go needs to download all dependencies. This takes about 1min and 40seconds on our CI.
Add action/cache in between multiple runs to speed up the tests.
When creating a new ChainClient using lens library, the keyring in background expects user to enter password.
This is all fine but this cannot work for our usecase because runners will be executed as a long running process
which should be able to restart itself if there ever is a failure. That would mean that validator/user would need to manually
enter their password every time.
Mind the "userInput" argument: https://github.com/cosmos/cosmos-sdk/blob/df8745909c9d973d3ddad7400140ec42ca17a316/crypto/keyring/keyring.go#L172
This asks user for password via stdin, and then stores the password in memory.
A proposal is to inject the password via ENV variable and store it in memory instead of user having to enter their password every time.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.