bitcore-lib-zcash/docs/Block.md

52 lines
1.7 KiB
Markdown

# Block
A Block instance represents the information on a block in the bitcoin network.
Note that creating it takes some computing power, as the tree of transactions
is created or verified.
Given a hexa or base64 string representation of the serialization of a block
with its transactions, you can instantiate a Block instance. It will calculate
and check the merkle root hash (if enough data is provided), but transactions
won't neccesarily be valid spends, and this class won't validate them. A binary
representation as a `Buffer` instance is also valid input for a Block's
constructor.
```javascript
assert(Block.isValidHeader(data);
assert(Block.isValidBlock(data);
var block = new Block(hexaEncodedBlock);
assert(block.id && block.hash && block.id === block.hash);
assert(block.version === Block.CurrentVersion);
assert(block.prevHash);
assert(block.timestamp);
assert(block.nonce);
assert(block.size);
assert(block.transactions[0] instanceof Transaction);
```
## Navigating through transactions
The set of transactions in a block can be explored by iterating on the block's
`transactions` member.
```javascript
for (var transaction in block.transactions) {
// ...
}
```
It is also possible to explore a block's Merkle tree of transaction hashes.
Head to the [Merkle tree](./DataStructures.html#MerkleTree) documentation for
more information:
```javascript
var root = block.tree.root;
assert(root instanceof bitcore.DataStructures.MerkleTree.Node);
assert(root.hash === block.id);
assert(root.isLeaf === false);
assert(root.left instanceof bitcore.DataStructures.MerkleTree.Node);
assert(root.right instanceof bitcore.DataStructures.MerkleTree.Node);
assert(root.left.left.left.left.content === block.transactions[0]);
```