Jack Grigg
6 years ago
7 changed files with 95 additions and 0 deletions
@ -0,0 +1,11 @@
|
||||
use protobuf_codegen_pure; |
||||
|
||||
fn main() { |
||||
protobuf_codegen_pure::run(protobuf_codegen_pure::Args { |
||||
out_dir: "src/proto", |
||||
input: &["proto/compact_formats.proto"], |
||||
includes: &["proto"], |
||||
customize: Default::default(), |
||||
}) |
||||
.expect("protoc"); |
||||
} |
@ -0,0 +1,47 @@
|
||||
syntax = "proto3"; |
||||
package cash.z.wallet.sdk.rpc; |
||||
option go_package = "walletrpc"; |
||||
|
||||
// Remember that proto3 fields are all optional. A field that is not present will be set to its zero value. |
||||
// bytes fields of hashes are in canonical little-endian format. |
||||
|
||||
// CompactBlock is a packaging of ONLY the data from a block that's needed to: |
||||
// 1. Detect a payment to your shielded Sapling address |
||||
// 2. Detect a spend of your shielded Sapling notes |
||||
// 3. Update your witnesses to generate new Sapling spend proofs. |
||||
message CompactBlock { |
||||
uint32 protoVersion = 1; // the version of this wire format, for storage |
||||
uint64 height = 2; // the height of this block |
||||
bytes hash = 3; |
||||
uint32 time = 4; |
||||
bytes header = 5; // (hash and time) OR (full header) |
||||
repeated CompactTx vtx = 6; // compact transactions from this block |
||||
} |
||||
|
||||
message CompactTx { |
||||
// Index and hash will allow the receiver to call out to chain |
||||
// explorers or other data structures to retrieve more information |
||||
// about this transaction. |
||||
uint64 index = 1; |
||||
bytes hash = 2; |
||||
|
||||
// The transaction fee: present if server can provide. In the case of a |
||||
// stateless server and a transaction with transparent inputs, this will be |
||||
// unset because the calculation requires reference to prior transactions. |
||||
// in a pure-Sapling context, the fee will be calculable as: |
||||
// valueBalance + (sum(vPubNew) - sum(vPubOld) - sum(tOut)) |
||||
uint32 fee = 3; |
||||
|
||||
repeated CompactSpend spends = 4; |
||||
repeated CompactOutput outputs = 5; |
||||
} |
||||
|
||||
message CompactSpend { |
||||
bytes nf = 1; |
||||
} |
||||
|
||||
message CompactOutput { |
||||
bytes cmu = 1; |
||||
bytes epk = 2; |
||||
bytes ciphertext = 3; |
||||
} |
Loading…
Reference in new issue