Architecture
- Actors
- Organizers (end users)
- Recorders
- Checkers
- Functional Components
- Data Structures
- Functional Layers
- Intra-chain transactions
- Inter-chain/Multi-chain transactions
- Homogeneous Assign Onward multi-chain transactions
- Heterogeneous transactions including non-Assign Onward blochchains
- On-chain application data publishing
- Advertising
- Smart contracts
Actions
4User stories, or bot tales when the action only involves bots.
Assignment Proposal
An organizer5Assigner or Receiver
prepares a partial assignment contract using their Asset Organizer application.6Asset organizer software may optionally contact one or more underwriters to obtain recent blockchain information. The asset organizer at least retains relevant block information from the last recorded contract it received confirmation of (from an underwriter.)
Then they communicate this to all parties to the contract for negotiation and acceptance.
Acceptance of Assignment Proposal
Once the assignment contract is valid (signed by all parties) it is ready to go to one or more underwriters.7An assignment contract may specify underwriter actors and underwriting amounts, or may leave part or all of the underwriting open for any willing underwriter to consider.
Request for Underwriting
Underwriters consider the assignment contract, if the recording bid is sufficient they proceed to assemble underwriting shares in accordance with the requirements of the assignment contract, and validate the sources of shares.
Acceptance for Underwriting
Once the underwriting contract8which is a wrapper around the assignment contract
is signed by all sources of underwriting shares, it might be communicated to concerned asset organizers as notification9paranoid asset organizers may stipulate that one or more parties to the assignment contract must sign off on the underwriting before the underwriting contract becomes a valid request for recording. The only use case I am imagining for this at the moment is a large transaction which needs a long time horizon to successfully underwrite and record the parties to that contract might want to check the underwriting themselves before committing to a long time attempt to record.
Another potential use of Asset Organizer countersignature on underwriting proposals would be to put transactions out to the underwriter market for open bid, accepting the most attractive underwriting offer.
of acceptance for underwriting, but it certainly wants to be communicated to the chainmakers as a request for recording.
Request for Recording
Chainmakers consider the underwriting contract, most of the time it should have some residual value and be worth recording in the next block, but high traffic spikes or other tax incentive driven situations may lead to the underwriting contract not being included in the desired new block cycle(s). When this is the case, underwriters must re-validate for double-spends and resubmit the updated underwriting contract for consideration by the chainmakers.
New Block Proposal
Chainmakers attempt to construct new blocks with the highest possible residual value, which generally include the most underwriting contracts. Proposed blocks are communicated to concerned underwriters.
New Block Approval
Underwriters must then choose the best10Generally speaking, the best new block is the one with the highest residual value, primarily because it has the best chance to be continued by the next block in the chain.
blocks to validate, countersign, and return to the chainmakers. When a block is not countersigned by an underwriter, it loses the residual value of the associated underwriting contract.
New Block Publication
Chainmakers then take their new blocks with the highest residual value, censor any underwriting contracts which were not fully countersigned11Censored contracts shorten the block, lowering the per-byte tax, and a block which contains underwriting contracts which are not fully countersigned is invalid - and therefore of 0 value.
and publish them, attempting to be the most valuable next block in the chain so that subsequent blocks will chain to them.
Transaction Confirmation
Underwriters monitor new block publication and when their Asset Organizers' assignment contract has been included in the stable blockchain, they notify the Asset Organizers with a copy of the recording block. Receivers of shares may then use that block, together with their associated private keys, to propose future assignment contracts.
Underwriter Signature Checking
Chain checkers12Note that any functional component may also implement chain checker functionality, chainmakers are particularly well placed to catch errors before they are incorporated in the blockchain, but any application anywhere may find errors and report them to receive shares.
monitor any and all signed transactions. When underwriters or chainmakers sign an incorrect contract13Some examples: any source of underwritten or underwriting shares traces back to a double spend in the signed chain, timestamps out of sequence (indicating time-lying), invalid data format, incorrect checksums, etc.
errorcheckers may publish notice of error on the blockchain to claim shares from the underwriting.
Chain Checking
During the course of their work, chain checkers end up validating many underwriting contracts. When an chain checker validates all sources of shares in a given block and they were all confirmed as correct, the chain checker may post their own underwriting shares on a claim to collect part of the block validation bounty.14A portion of every assignment contract shares are set aside for block validation, and this amount is shared among chain checkers. If the chain checker makes a claim of "all good" and another chain checker finds them to be in error, the erroneous chain checker's underwriting shares may be claimed by the finder of the error.
Loop Closure
Especially during development, but also possibly long term, when a transaction is considered and rejected, it may always be rejected with silence, but it may also be faster and more efficient to communicate a notice of rejection and reason why, possibly with suggested correction. Like: recording bid too low, try this amount.
Network
The network layer is generic, modular, allowing actors to communicate data structures during execution of actions. Some communication is point to point (actor to actor) and several types of communication are broadcast: for instance to all chainmakers, or all interested underwriters. Initial testing is anticipated to use RabbitMQ, but before widespread deployment, a F2F small world network,15Possibly still using RabbitMQ as a communication layer.
including some behavior monitoring for bad actors on the network, is desirable. In support of behavior monitoring, it is anticipated that actors may adopt long-term unique ids (key pairs) in support of good behavior rewarding algorithms.
For a blast from the past, see Anne's Ark, a F2F network concept that predated the initial BitTorrent release by a bit more than a year.
Assign Onward
4 May 2018, updated 28 June 2018
MIT License
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
SOFTWARE.