Requirements / Definitions
Enumerated, small, testable descriptions of data structures and functionality, guided by the Core Principles, and mixed with implementation decisions that, while not specifically required to fulfill the core principles, do serve to fulfill the requirements and provide a defined solution.
- R1: A signature is a data collection which includes:
- R4: Assignment agreements are structured into AO_AUTHORIZATION collections as described in the linked document, including:
- R4a: Valid AO_AUTH_SIG signature data collections as described in R1 for every participant in the R4b1 AO_ASSIGNMENT, signing the AO_ASGN_HASH from R4b2 plus the time of signing.
- R4b: An AO_ASSIGN_COMPLETE data collection, including:
- R4b1: an AO_ASSIGNMENT containing:
- R4b2: AO_ASGN_HASH contains an R3 hash of the AO_ASSIGNMENT in R4b1:
- R5: A data item consists of a key, plus data:
- R5a: A data item key is a 63 bit integer, stored as a variable byte code.
- R5a1: The data item key identifies what the data item data represents
- R5a2: The data item key also identifies the size of the following data in one of the following ways:
- R5b: data item data, meaning and size as described by the R5a key.
- R6: A data collection is an R5a2b variable size data item which contains zero or more data items.
- R6a: When avoidable, the order of data items in a collection is not important.
- R6b: When being cryptographically R3 hashed or R1 signed, the order of items in a collection must not be changed.
- R7: A single byteCodeDefinitions.json file describes all R5a data item key definitions for an Ⓐ protocol, including:
- R7a: key code value
- R7a1: a bitmask in the key code value identifies whether or not an item is separable
- R7b: acronym - used in programatic #defines
- R7c: plain text description
- R7d: R5a2 size
- R7e: object type plus any other convenient implementation definitions.
- R8: All timestamps must represent valid sequencing
- R8a: A block must not contain signature timestamps after the block's creation time.
- R8b: A block's creation time must not preceed the creation time of any block in the chain it is appending to.
- R8c: An assignment giver's signature timestamp must not preceed the creation time of the block which recorded receipt of the shares being given.
13 August 2018
Copyright (c) 2018 Assign Onward
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE