You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

block.md 2.0 kB

4 years ago
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. ## 区块
  2. 采用`BFT-SMaRt`共识协议,即时出块,单个区块交易数限制默认为`2000`(`bftsmart.config`中参数`system.totalordermulticast.maxbatchsize`)
  3. ### 结构
  4. - `LedgerBlock`:
  5. ```java
  6. @DataContract(code = DataCodes.BLOCK)
  7. public interface LedgerBlock extends BlockBody {
  8. /**
  9. * 区块哈希;
  10. */
  11. @DataField(order = 1, primitiveType = PrimitiveType.BYTES)
  12. HashDigest getHash();
  13. }
  14. ```
  15. - `BlockBody`:
  16. ```java
  17. @DataContract(code= DataCodes.BLOCK_BODY)
  18. public interface BlockBody extends LedgerDataSnapshot{
  19. // 上一个区块哈希
  20. @DataField(order=2, primitiveType = PrimitiveType.BYTES)
  21. HashDigest getPreviousHash();
  22. // 账本哈希
  23. @DataField(order=3, primitiveType = PrimitiveType.BYTES)
  24. HashDigest getLedgerHash();
  25. // 区块高度
  26. @DataField(order=4, primitiveType= PrimitiveType.INT64)
  27. long getHeight();
  28. // 交易数据集哈希
  29. @DataField(order=5, primitiveType = PrimitiveType.BYTES)
  30. HashDigest getTransactionSetHash();
  31. // 区块时间戳,毫秒
  32. @DataField(order=6, primitiveType = PrimitiveType.INT64)
  33. long getTimestamp();
  34. }
  35. ```
  36. - `LedgerDataSnapshot`:
  37. ```java
  38. @DataContract(code=DataCodes.DATA_SNAPSHOT)
  39. public interface LedgerDataSnapshot {
  40. // 管理数据集哈希
  41. @DataField(order=1, primitiveType = PrimitiveType.BYTES)
  42. HashDigest getAdminAccountHash();
  43. // 用户集哈希
  44. @DataField(order=2, primitiveType = PrimitiveType.BYTES)
  45. HashDigest getUserAccountSetHash();
  46. // 数据账户集哈希
  47. @DataField(order=3, primitiveType = PrimitiveType.BYTES)
  48. HashDigest getDataAccountSetHash();
  49. // 合约集哈希
  50. @DataField(order=4, primitiveType = PrimitiveType.BYTES)
  51. HashDigest getContractAccountSetHash();
  52. // 系统事件集哈希
  53. @DataField(order=5, primitiveType = PrimitiveType.BYTES)
  54. HashDigest getSystemEventSetHash();
  55. // 用户事件集哈希
  56. @DataField(order=6, primitiveType = PrimitiveType.BYTES)
  57. HashDigest getUserEventSetHash();
  58. }
  59. ```