tari-project / tari Goto Github PK
View Code? Open in Web Editor NEWThe Tari protocol
Home Page: https://tari.com
License: BSD 3-Clause "New" or "Revised" License
The Tari protocol
Home Page: https://tari.com
License: BSD 3-Clause "New" or "Revised" License
child of #45
child of #32
Server-client API for communicating with Tari base nodes
Describe the necessary extensions to Mimblewimble enabling time-locked transactions (as opposed to time-locked outputs) which allow the development of time locked contracts (useful for e.g. Atomic Swap contracts)
Base Node service that receives candidate blocks and checks that the block is valid according to this node.
BlockValidation doesn't do much beyond TransactionValidation. Essentially:
Several definitions on public key and secretkey are repeated. These should be factored out
Describe how a Validator Node registers itself on the base layer.
child of #34
From RFC-150:
Different methods for recovering the wallet state of the Tari software wallet:
child of #34
Provides functionality for a wallet to build, sign and verify transactions to be sent to the network
from RFC-150:
Describe how clients can discover which assets are being managed on the network and the basic ways of interacting with them.
child of #41
child of #34
From Wallet RFC:
It MUST be able to establish a connection to a Base Node to submit transactions and monitor the Tari blockchain [for transaction relevant to me]
Create RFC taking on node syncing
Describe the mechanism for Asset Checkpoints. To make up for the fact that the DAN has no proof-of-work and therefore has lower degrees of trustlessness and decentralisation; VN committees must provide checkpoints on the base layer from time to time. These checkpoints are, amongst other things, immutable commitments to the state of an asset at a point in time.
child of #41
KeyManager must deterministically generate keypairs based on the master key.
Keys generated this way should be tracked in an array / lookup table
TBH I think HD keys are overrated. They produce a huge search space if conventional paths aren't used; and I've never spoken to anyone who actually uses them. Unless there are good arguments to the contrary, I propose a linear deterministic pattern (e.g. just hashing the last key used).
child of #32
Base Node UTXO manager for the Tari UTXO set. The UTXO set describes all spendable Tari coins and along with the block headers and transaction kernels, is sufficient to describe and verify the full Tari state
provide a general, easy to use API for building aggregated signatures
Provide one Implementation using Schnorr signatures
We should have automated test coverage tooling built into out CircleCI automation
Validate new transactions when nodes receive them.
Transaction
already has internal consistency code (commitments sum to the excess, range proofs hold, signatures are valid etc).
This issue requires blockchain validation:
Provide an easy-to-use m-of-n multisig API (it may make sense to unify this into #64)
And provide an implementation
child of #32
Implementation of the Tari unconfirmed transaction pool
child of #45
Basic structs and traits for Tari blocks
Set up the UTXOManager type that essentially exposes an API for handling UTXOs. Most of this functionality will already be handled by the underlying MRR:
Provide an easy-to-use API for range proofs
Since there are several implementations of range proofs, the implementation should be generic, with at least one (preferably bulletproofs) implementation being provided
Following a good discussion on #tari-dev, we need a proposal for all the network communication protocols in the Tari network. Based on the #tari-dev chat, it seems like we could potentially build the entire
network on:
Specifically, actor <-> actor comms might look like
BN = Base Node
W = Tari Coin Wallet
VN = Validator node on DAN
AM = asset manager on DAN
BN <-> BN | W <-> BN | W <-> W | VN <-> VN | AM <-> AM | AM <-> VN | VN <-> BN | |
---|---|---|---|---|---|---|---|
Discoverability | Broadcast & full dir | Whitelist | DHT | DHT? | Same as W<->W | DHT | Same as W<->BN |
DHT? | |||||||
Communication | Gossip (P2P) | P2P | P2P | P2P | P2P | P2P | |
Dandelion (1st step) | |||||||
Tor (1st step) |
In general all the P2P comms could optionally be tunneled through something like Tor to hide your IP from peers
However, there's a lot of detail missing here and plenty of unanswered questions that could benefit form the rigour of an RFC document
Tari Base Node implementation
Describe the details of the DAN VN consensus algorithm.
Create RFC detailing what is required of an archive mode
child of #34
Provides functionality for Key generation, storage, and reconstruction
Tari-Monero merge mining implementation
This proposal is (tick applicable):
Date | Changes |
---|---|
2018/12/19 | Initial version |
This document will propose the functionality and techniques required by the base layer Tari software wallet.
The Wallet software is responsible for constructing and negotiating transactions for transferring and receiving Tari coins on the base layer. It should also provide functionality to generate, store and recover a master seed key and derived cryptographic key pairs that can be used for base layer addresses and signing of transactions.
A detailed description of the required functionality of the Tari software wallet is provided in three parts: basic functionality, maintaining of private keys and wallet recovery.
Basic functionality required of the Tari software wallet:
Required functionality related to the maintaining of the master seed key and derived private cryptographic keys:
Different methods for recovering the wallet state of the Tari software wallet:
child of #45
Describe the details of the multi-party contracts that VN committees enter into to allow them to register new asset multiparty contracts on the base layer.
Provide an easy-to-use API for "messages".
Messages are anything that can be represented as a byte string (blobs, text strings, numbers).
Messages can be concatenated
Messages must be hashed (the actual hash function is decoupled from the message implementation) into a Challenge
before being used in signatures etc.
child of #33
Provide a HomomorphicCommitment
type/trait.
Implement a PedersenCommitment
with a composable backend (i.e. the Curve and Generator points should be easily configurable)
Do it already!!!
A high-level overview of Validator Nodes' responsibilities on the DAN
child of #45
Basic struct & traits for Tari Transactions
Describe the process for Top Level Digital asset Issuer (TLDI) registration on the Tari base layer.
Tari base layer (Tari Coin) wallet implementation
Provide a easy-to-use API for Schnorr Signatures, independent of underlying EC
child of #33`
Provide a easy-to-use API for partial signature generation, verifying and aggregating
As per RFC-0172:
The PeerManager's responsibility is to manage the list of peers that the node has previously interacted with. This list is called a routing table and is made up of Peers.
The PeerManager can
The peer manager for Tari base nodes
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.