|
@@ -40,7 +40,7 @@ function GetOpRef(operation : Operation) : QWord
|
|
|
begin
|
|
|
let accountNumber = operation.Account
|
|
|
let n_operation = operation.n_operation
|
|
|
- Result = (QWord(accountNumber) SHL 31) BIT-OR QWord(n_operation))
|
|
|
+ Result = (QWord(accountNumber) SHL 32) BIT-OR QWord(n_operation))
|
|
|
end
|
|
|
```
|
|
|
|
|
@@ -81,17 +81,23 @@ end
|
|
|
|
|
|
### New Network Operation: NET_OP_PULL_ACCOUNT_OPS
|
|
|
|
|
|
-This network operation allows a node to fetch specific operations from other nodes that it does not have. It is used when rebuilding the block from the block skeleton. If the node does not have the operations referenced in the skeleton, it uses this network operation to fetch them from other peers. This operation will be used sparingly since most nodes will already have most of the operations most of the time.
|
|
|
+This network operation allows a node to fetch specific block operations from other nodes that it does not have. It is used for rebuilding the full block from the block skeleton. The requesting node references the desired block operation using a ```BLOCK_OP_REF``` which is a QWord structure defined as follows:
|
|
|
+
|
|
|
+```
|
|
|
+ BLOCK_OP_REF = (QWord(BlockNumber) SHL 32) BIT-OR QWord(OperationIndex)
|
|
|
+```
|
|
|
+
|
|
|
+ If the receiving node does not have this operation, the requesting node re-sends the request to other nodes until one is found (or abandoned). This operation will be used in-frequently since most nodes have most of the operations most of the time.
|
|
|
|
|
|
**Arguments**
|
|
|
- N: DWord - the number of operations being requested
|
|
|
-- OP_REF_1: QWord - the first operation being requested
|
|
|
+- BLOCK_OP_REF_1: QWord - the first operation being requested
|
|
|
|
|
|
.
|
|
|
.
|
|
|
.
|
|
|
|
|
|
-- OP_REF_N: QWord - the N'th operation being requested
|
|
|
+- BLOCK_OP_REF_N: QWord - the N'th operation being requested
|
|
|
|
|
|
**Output**
|
|
|
- M: DWord - the number of operations being returned
|