Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
The purpose of this document is to outline the requirements for a refund process that may be initiated by the user to refund a transaction that has not been completed (not reflected in Primary Wallet).
The design requirement listed in this document will be limited to the refund deposited BTC functionality of the SON – other coins should be handled differently if needed. This will outline the required steps that will be performed to refund the BTC in the Peerplays blockchain. Also outlined here will be the sequence in which the required steps will be performed including:
any interactions with the user.
validations to ensure complete and accurate information gathering.
The Bitcoin Sidechain functionality has been implemented in the Peerplays blockchain but it doesn't take into account, the change of SONs. As per the current implementation of Sidechain, a multisig bitcoin wallet will be created on the bitcoin blockchain to hold the bitcoins that have been deposited into the pBTC accounts of the Peerplays users. Every SON will have a bitcoin transaction signing key for this multisig bitcoin wallet and will be required to sign any withdrawal transaction. When a SONs changes, the transaction signing key of the outgoing SON needs to be removed from the multisig bitcoin wallet and the key of the incoming SON needs to be added. The suggested proposal is to make the Sidechain code available as a plugin and assign the responsibility for running the sidechain code to separate nodes called the Sidechain Operating Nodes (SONs)
Process overview below details typical steps in identifying and handling a BTC transaction that does not complete because required number of active SONs check fails. This causes transactions to wait until active SON threshold is met.
Note that this process is transaction agnostic. For details surrounding specific transactions, check BTC Deposit and BTC Withdrawal requirements
Steps involved:
User initiates a BTC transaction (such as deposit or withdrawal)
Listener identifies that a BTC transaction is initiated
Listener passes event data to handler
Handler receives event data and creates an object (normally SON Wallet Object, SON Wallet Deposit Object or SON Wallet Withdraw Object)
Note that while this example process uses insufficient number of active SONs as failure reasons, there may be other reasons why transaction was not processed.
Refund scenario is initiated by the user in relation to BTC transactions that fail to process. Failure may be caused by various scenarios, for example when there are less than 5 active SONs, transaction will wait until 5 or more SONs become available and remain unprocessed until minimum active SON condition is met.
Until SONs complete the transaction and it is reflected in Primary Wallet, user may initiate a refund by creating another BTC transaction that uses transaction id of the original transaction (the one user wants to refund).
Note that in all cases, refunds are not issued automatically and must be initiated by the user.
System does not automatically initiate refunds because when active SONs threshold check fails, transaction is stored with intent to be processed when sufficient number of active SONs is available.
User must initiate the refund themselves by initiating a transaction that includes transaction id of the transaction that needs to be refunded, signs the transaction using a private key that matches the public key they provided in sidechain address mapping. Transaction is then pushed to bitcoin network and user is refunded once transaction is processed
One-or-weighted-multisig method of deposit implementation allows to send funds from this address with 2/3 weights of SON votes (like in Primary Wallet) or with single user signature. To create such address we need:
user public key
all SONs public keys
every SON weight
When funds are being sent from this address, system must first check if user signature is correct. When signature is correct, system completes the transaction. Otherwise, when signature is incorrect, system checks for 2/3 weights of SON votes to complete the transaction.
N/A
Object is checked by by all active SONs to compare object data from the chain against data generated by each SON.
If data does not match, transaction is terminated
If data matches, object is deemed ‘Confirmed'. Proceed to next step
Handler checks the number of active SONs
If active SONs are > 5, proceed to next step
If active SONs are < 5, store transaction for processing until required number of active SONs is available (this step will be repeated until SON availability requirement is met)
User becomes aware that transaction didn't complete by checking balance, then they copy transaction id of the transaction that's stored for processing (transaction that is going to be refunded). Transactions are refundable until sons move funds inside the Primary Wallet.
User creates another transaction using transaction id of transaction they want to refund to move funds to their own address
User signs the transaction using a private key that matches the public key they provided in sidechain address mapping
Transaction is pushed to bitcoin network and user is refunded once transaction is processed
The purpose of this document is to outline the steps required by a user to vote for an SON in the Peerplays blockchain and the consensus mechanism for SONs.
The functional requirement listed in this document will be limited to the voting and consensus portion of the SON. This will outline the required steps that will be performed by a user to vote for an SON in the Peerplays blockchain and their selection as active SONs. Also outlined here will be the sequence in which the required steps will be performed including:
any interactions with the user.
validations to ensure complete and accurate information gathering.
The Bitcoin Sidechain functionality has been implemented in the Peerplays blockchain but it doesn't take into account, the change of SONs. As per the current implementation of Sidechain, a multisig bitcoin wallet will be created on the bitcoin blockchain to hold the bitcoins that have been deposited into the pBTC accounts of the Peerplays users. Every SON will have a bitcoin transaction signing key for this multisig bitcoin wallet and will be required to sign any withdrawal transaction. When a SONs changes, the transaction signing key of the outgoing SON needs to be removed from the multisig bitcoin wallet and the key of the incoming SON needs to be added. The suggested proposal is to make the Sidechain code available as a plugin and assign the responsibility for running the sidechain code to separate nodes called the Sidechain Operating Nodes (SONs).
Described here is the process to vote for SONs in the Peerplays Blockchain.
The Peerplays blockchain will allow the users to vote for the SON enabled node operators. The Peerplays blockchain should have a minimum of 15 active SON nodes. The user should be able to see a list of the SON enabled nodes and vote for up to 15 nodes. An SON enabled node will be able to operate as an active SON only when it receives the votes required to become one of the top 15 SONs. The number of active SON Nodes can be increased by the witnesses/advisor by making a change to the chain parameters. The active SONs will have corresponding bitcoin transaction signing keys in order to sign transactions for the Peerplays bitcoin multisig address on the bitcoin blockchain. When the active SONs change on the Peerplays blockchain, their corresponding bitcoin transaction signing keys are changed in the Peerplays bitcoin multisig address on the bitcoin blockchain.
Each SON when processing inter blockchain communications (IBC) will carry a percentage of weight in the signing based on the votes they have received. Every IBC request will require signed consensus by at least ⅔ of the Active Casted Weighted (ACW) Votes for the SONs. Active Casted Weighted votes means the votes casted to active SONs by users who have staked some PPY weighted by their staked PPY.
If an SON enabled node's downtime exceeds 12 continuous hours, it should be automatically deregistered in the Peerplays blockchain as an SON enabled node and all the votes casted for me should be reverted.
If an SON decides to stop operating the node by disabling the SON plugin, any votes casted to him will be removed and another SON will take his place.
The below command from the CLI wallet will be used to vote for SONs: vote_for_son <voting_account> <son> <approve> <broadcast>
voting_account_id: the name or id of the account who is voting with their shares
son: the name or id of the son's owner account
approve: true if you wish to vote in favor of that son, false to remove your vote in favor of that son
broadcast: true if you wish to broadcast the transaction
The purpose of this document is to outline the steps required to create and change the multisig bitcoin wallet for Peerplays bitcoin sidechain.
The functional requirement listed in this document will be limited to the Multisig Bitcoin Wallet (Primary Wallet) portion of the SON. This will outline the required steps that will be performed by the Peerplays blockchain to create a multisig bitcoin wallet using the bitcoin signatures of the SONs and changing the signatures in the multisig wallet when required. Also outlined here will be the sequence in which the required steps will be performed including:
any interactions with the user.
validations to ensure complete and accurate information gathering.
The Bitcoin Sidechain functionality has been implemented in the Peerplays blockchain but it doesn't take into account, the change of SONs. As per the current implementation of Sidechain, a multisig bitcoin wallet will be created on the bitcoin blockchain to hold the bitcoins that have been deposited into the pBTC accounts of the Peerplays users. Every Peerplays witnesses will have a bitcoin transaction signing key for this multisig bitcoin wallet and will be required to sign any withdrawal transaction. When a SONs changes, the transaction signing key of the outgoing witness needs to be removed from the multisig bitcoin wallet and the key of the incoming witness needs to be added. The suggested proposal is to make the Sidechain code available as a plugin and assign the responsibility for running the sidechain code to separate nodes called the Sidechain Operating Nodes (SONs). The SONs will be independent of the witnesses and don't need to be changed much often.
Described here is the process to create the mutlisig bitcoin wallet with the SONs signatures and changing the signatures when required.
In the sidechain implementation, at the beginning of the sidechain fork, a multisig bitcoin wallet called the Primary Wallet is created on the bitcoin blockchain to store the funds transferred by the users to their pBTC accounts. This multisig bitcoin wallet should be created by using the bitcoin public keys of the SONs in the active SONs list We will also have to use the Hash Time Locked Contracts (HTLC) for this address so that if a user transfers the funds to their pBTC accounts and due to some error/downtime, the funds will enter a pending status and wait until more active SONs are available to process and sign the transaction
SON Change: The SONs may change at any maintenance interval when the votes are tallied and the existing SONs are voted out. Since, the bitcoin public keys of the SONs will be used to create the multisig bitcoin wallet, whenever SONs in the active lists change, this changes the set of keys associated with multisig bitcoin wallet. This when active SON's change a new multisig bitcoin wallet must be created because the multisig bitcoin wallet address is dependent on the public keys. Once a new wallet has been created, system must transfer the funds from the old wallet to the new wallet every time an SON changes which will incur bitcoin transaction fees.
Once, 1/3rd of the initial SONs change, we will create a new multisig bitcoin wallet with the public keys of the current SONs and transfer the funds from the previous wallet to the newly created multisig bitcoin wallet.
SON Downtime: The SONs might stop functioning or go into maintenance. We should provide a mechanism to the SONs to announce any planned maintenance so that the community knows about it. In any case, the maximum continuous downtime allowed for an SON will be 12 hours (This should be a chain parameter). If the downtime exceed 12 hours, the SON will be deregistered. During the downtime, the SON will not be able to sign any transactions. If more than 1/3rd SONs are not able to sign the bitcoin transactions, the pending transaction go into wait mode as described in BTC Transaction Processing & Signing. Once the required number of active SONs reaches required threshold, queued transactions will be signed and processed.
Similarly, if 2/3rdsmore SONs are down, the incoming bitcoin transactions can't be published on the Peerplays blockchain and the funds cannot be accepted. In this scenario, transactions will also enter a pending state in which they will await the required number of active SONs.
SON Communication Problem: In case of a communication problem between the all SONs and the witnesses which might be caused due to a DOS attack or for any other reason, the sidechain functionality might come to a standstill for a period of time. In this scenario, any incoming funds into the multisig bitcoin wallet will enter a queued pending state until the minimum number of active SONs is available. Transactions will be signed and processed once required number of active SONs is available.
SON heartbeats
SON maintenance mode actions
SON de-registration
The Bitcoin Sidechain functionality has been implemented in the Peerplays blockchain but it doesn't take into account, the change of SONs. As per the current implementation of Sidechain, a multisig bitcoin wallet will be created on the bitcoin blockchain to hold the bitcoins that have been deposited into the pBTC accounts of the Peerplays users. Every SON will have a bitcoin transaction signing key for this multisig bitcoin wallet and will be required to sign any withdrawal transaction. When a SONs changes, the transaction signing key of the outgoing SON needs to be removed from the multisig bitcoin wallet and the key of the incoming SON needs to be added. The suggested proposal is to make the Sidechain code available as a plugin and assign the responsibility for running the sidechain code to separate nodes called the Sidechain Operating Nodes (SONs).
Described here is the process of SON status reporting (heartbeat) and maintenance mode activities.
System sends heartbeat to registered SONs based on specified frequency
Process responses:
Active and Request Maintenance SONs will respond to heartbeat
Update statistics with last active timestamp and transactions signed updates
In maintenance and inactive SONs will not respond to heartbeat
not responding
check if last active timestamp exceeds heartbeat frequency by factor of 2
The Peerplays blockchain will allow the node operators to enable/disable the Sidechain functionality on their node. They will have to stake PPY 50 to be able to register as an SON. As soon as the Sidechain functionality is enabled/disabled and the user vests 50 PPY, the Peerplays blockchain will add the node to its list of Sidechain enabled nodes and make the node operator available for SON voting. An SON enabled node will be able to operate as an SON only when it receives the votes required to become one of the top 15 SONs.
SON monitoring is required because only active SONs can participate in blockchain transactions.
Note that new SON's start in inactive status then become active during first maintenance block and begin send
System must include an automated heartbeat check that monitors status of registered SONs per each 180 second interval (heartbeat interval). This interval must be configurable via chain_parameters in extensions.son_heartbeat_frequency, and set to 180 seconds by default. (Other configuration may be possible via genesis.json). Note that this interval may be different in production, but for testing purposes it should be within 3 minutes.
Heartbeats must be sent by SONs who are in active, or request_maintenance status. All sent heartbeat activity must be logged. SONs in inactive status must not send heartbeat.
The following other statistics must be tracked and logged as part of heartbeat monitoring:
number of transactions signed - number of transactions signed by SON. This value must be updated each time a transaction is signed. This counter is reset during SON rewards
total downtime - compounded time that SON was down represented in HH:MM:SS format. This value must be updated to compound all current interval downtime values.
current interval downtime - Time since last transition to in_maintenance
last down timestamp - timestamp of last transition to in_maintenance status
last active timestamp - timestamp of last transition to active status, or last heartbeat where status is active or request_maintenance.
SONs in active or request_maintenance must be treated as active for the purpose of transaction signing.
SONs in in_maintenance or inactive status must not participate in transaction signing.
Statistics for active SONs must be updated after every heartbeat where SON is active, request maintenance.
System must include a wallet command which requests SON to be placed in maintenance mode. Requesting SON maintenance must be available to SONs in active status. Once request SON maintenance is initiated, target SON must be set to in_maintenance at the upcoming chain maintenance interval.
SONs in maintenance modes can be changed to active or inactive mode via sending a heartbeat.
System must allow cancelling of maintenance request via cancel_request_son_maintenance command. System must restrict this command to SONs in request_maintenance status.
After successful execution of cancel maintenance request, SON must be placed into active status.7.3
SON monitoring process must track SONs which miss a heartbeat and declare an SON inactive if an SON misses two consecutive heartbeats. Tracking missed heartbeats must reset for each SON where a heartbeat is received after a missed heartbeat.
System must de-register SONs that have been in maintenance state for longer than allowed. Allowed maintenance threshold must be a configurable parameter extensions.son_deregister_time, with 12 hours being the default value. Alternatively, deregister threshold may be specified in genesis.json
Once system identifies an SON that has been in maintence state for longer than specified threshold, system must create a proposal with son delete operation raised by one of schedules SONs.
The purpose of this document is to outline the steps required to pay the SONs for their contribution to the Peerplays network.
The functional requirement listed in this document will be limited to the payment portion of the SON. This will outline the required steps to pay the SONs for the functions performed by them on the Peerplays blockchain. Also outlined here will be the sequence in which the required steps will be performed including:
any interactions with the user.
validations to ensure complete and accurate information gathering.
The Bitcoin Sidechain functionality has been implemented in the Peerplays blockchain but it doesn't take into account, the change of SONs. As per the current implementation of Sidechain, a multisig bitcoin wallet will be created on the bitcoin blockchain to hold the bitcoins that have been deposited into the pBTC accounts of the Peerplays users. Every SON will have a bitcoin transaction signing key for this multisig bitcoin wallet and will be required to sign any withdrawal transaction. When a SONs changes, the transaction signing key of the outgoing SON needs to be removed from the multisig bitcoin wallet and the key of the incoming SON needs to be added. The suggested proposal is to make the Sidechain code available as a plugin and assign the responsibility for running the sidechain code to separate nodes called the Sidechain Operating Nodes (SONs).
Described here is the process to pay the SONs on the Peerplays Blockchain.
N/A
The SON operators will be paid in PPY from the payment pool set up specifically for payments to SONs. This pool will be replenished by depositing a percentage of all the transaction on the Peerplays network. This percentage should be a chain parameter so that it can be changed. The fee will be distributed at the Maintenance intervals based on transactions signed and weight of voting for each SON. Recommended SON payment is 200 PPY daily (this limit is controlled by `SONS_DAILY_MAX_REWARD`).
7.1 Supported Transaction Types
All operations performed by SONs must be tallied and paid according to budget and defined payout procedure (as described in sections below).
System must include a library (global parameters) of configurable fee amounts fee amounts associated with each operation. Library must track each operation, its type, fee amount and currency in which fee is charged (PPY by default). Fees are set and amendable by committee members in accordance with committee member procedures to update global parameters.
Operations commonly performed by SONs are as follows:
asset_issue_operation
asset_reserve_operation
proposal_create_operation
proposal_update_operation
See Risks section for considerations regarding fee amounts and their implications on financial viability of SON.
7.2 Collecting Fees
All operations require a fee to be collected and paid to the network
Fee collection is determined by transaction type:
Core asset transaction fees are deducted from payer's account
UIA (pBTC) transaction fees are converted to core asset using base exchange rate (note: bBTC to BTC is 1:1)fee mus
In a scenario where user has 0 PPY, fee must be collected from fee_pool.
7.3 Determining payout
Payout must be determined by the number of transactions verified by a node. Higher availability nodes participate in more transactions and therefore receive higher payout.
SONs are paid based on % ratio between total_transactons_per_day and SONS_DAILY_MAX_REWARD, where SON's % share of daily transactions determines what % of SONS_DAILY_MAX_REWARD is paid.
Payout happens only during SON maintenance interval, therefore payout is configurable based on the payment interval and can be configured to happen once every x maintenance intervals.
7.4 Payment Pool
Payments to SONs are stored inside son_budget which functions similarly to witness_budget. Specifically, son_budget accumulates transaction fees collected by peerplays network. As described above, payout happens during the maintenance interval .
SONS_DAILY_MAX_REWARD must initially be set to 200 PPY. We may to have to change this as per market realities etc. Currently BTC is the only supported cryptocurrency.
The purpose of this document is to outline the steps required by a Peerplays node operator to enable/disable Sidechain plugin in the Peerplays blockchain.
The functional requirement listed in this document will be limited to the configuration portion of the SON. This will outline the required steps that will be performed by the Peerplays node operator to enable/disable Sidechain plugin in the Peerplays blockchain from the command line. Also outlined here will be the sequence in which the required steps will be performed including:
any interactions with the user.
validations to ensure complete and accurate information gathering.
The Bitcoin Sidechain functionality has been implemented in the Peerplays blockchain but it doesn't take into account, the change of SONs. As per the current implementation of Sidechain, a multisig bitcoin wallet will be created on the bitcoin blockchain to hold the bitcoins that have been deposited into the pBTC accounts of the Peerplays users. Every SON will have a bitcoin transaction signing key for this multisig bitcoin wallet and will be required to sign any withdrawal transaction. When a SONs changes, the transaction signing key of the outgoing SON needs to be removed from the multisig bitcoin wallet and the key of the incoming SON needs to be added. The suggested proposal is to make the Sidechain code available as a plugin and assign the responsibility for running the sidechain code to separate nodes called the Sidechain Operating Nodes (SONs).
Described here is the process to configure the SON plugin in the Peerplays blockchain.
The Peerplays blockchain will allow the node operators to enable/disable the Sidechain functionality on their node. They will have to stake PPY 50 to be able to register as an SON. As soon as the Sidechain functionality is enabled/disabled and the user vests 50 PPY, the Peerplays blockchain will add the node to its list of Sidechain enabled nodes and make the node operator available for SON voting. An SON enabled node will be able to operate as an SON only when it receives the votes required to become one of the top 15 SONs.
Any Peerplays node can become a SON irrespective of it is a witness or not. It can connect to a local or remote Bitcoin node and verify the transactions.
./programs/witness_node/witness_node --resync --replay --son-enable
This command will enable the SON functionality in the Peerplays node. The node will be registered in the peerplays blockchain as an SON enabled node. Peerplays users will be able to vote for this user to be an active SON. The node will be able to listen to the changes on the Bitcoin blockchain. An active SON can perform all the functionality of the sidechain once it has been voted into the top 15 SONs.
The error messages are to be displayed in GUI wallet or cli_wallet or other programatic means.
The SON node should not be enabled and active for the same Peerplays account
Trying to enable an already in enabled SON node will give the error message "SON is already enabled for the account_name."
The account trying to enable SON should have a minimum balance of 50 PPY which has to be VESTED to become SON
If the account is not having the minimum required balance, an error message "Minimum VESTING Balance for SON node activation is not available. Make sure that the account is funded with MINIMUM_VESTING_BALANCE"
This section talks about permanently disabling SON.
./programs/witness_node/witness_node --resync --replay --son-disable
This command will disable the SON functionality in the Peerplays node and deregister the node in the peerplays blockchain as an SON enabled node. Any votes casted to the user to be an active SON will be reverted. The user will be able to claim their vested PPY after 2 days of deregistering their node.
The error messages are to be displayed in GUI wallet or cli_wallet or other programatic means.
Only a SON node which is in "enabled state" can be disabled
Trying to de-activate/disable a Peerplays node with SON not enabled will give the error message "SON is not enabled for account_name"
If a SON is disabled and trying to move the VESTED funds before 2 days duration via any means should be prevented
All the v1 Sidechain APIs should work as it is. Except for those, an API to provide the list of SON enabled users will be required. The API should return the list in the following format:
Expand source
[
{
serial_num: 1,
id: 1.20.1,
user: memphis123,
rank: 1,
about_url: www.memphis-node.com,
sidechain_url: http://www.memphis-node.com/sidechain,
is_active: true,
votes: 23223245
},
{
....
},
....
]
These are new options to be added.
list_sons: We need a command in the CLI Wallet similar to list_witnesses to get the list of SONs.
list_active_sons: This command should provide a list of active SONs on the Peerplays blockchain.
if no, do nothing
in maintenance flow
check current interval downtime
if less than 12 hrs, do nothing
if more than or equal to 12 hrs - deregister SON
proposal_delete_operation
son_create_operation
son_update_operation
son_delete_operation
son_heartbeat_operation
son_report_down_operation
son_maintenance_operation
son_wallet_recreate_operation
son_wallet_update_operation
son_wallet_deposit_create_operation
son_wallet_deposit_process_operation
son_wallet_withdraw_create_operation
son_wallet_withdraw_process_operation
If a previous VESTED balance is available, it will not be considered to be the minimum VESTING BALANCE. This is to avoid accounts spamming the blockchain with SON-activate commands.
son_report_down
son_report_down_operation
son_wallet_update_operation
son_wallet_deposit_create_operation
son_wallet_deposit_process_operation
son_wallet_withdraw_create_operation
son_wallet_withdraw_process_operation
sidechain_transaction_create_operation
When certain types of transactions are performed by SONs, proposals are created to seek approval for these transactions. Proposals are created using create operation, and must be approved or rejected following proposal creation. Approved proposals fulfill their associated transaction (for example deposit), rejected proposals cancel the transaction.
N/A
Each proposal contains a list of operations. These operations are the way to change anything in the blockchain, including performing transfers, modifying chain parameters, creating and modifying accounts, assets, and also proposals.
In addition to a list of operations, a proposal also has a defined review period and expiration time.
N/A
A proposal must when proposal_create_operation operation is executed. This operation defines the review period and expiration time, as well as the list of operations proposed.
The proposal then must require approval via proposal_update_operation. This operation must include functions to add or remove active approvals, owner approvals, or key approvals.
Ability to delete (which is effectively a veto on the proposal) a proposal must exist via proposal_delete_operation. Execution of this operation must be restricted to accounts who are required authorities on this proposal, alternatively, the same effect would be achieved by simply not adding one's approval to the proposal.
A proposal must be accepted when it reaches the required approvals through the proposal_update_operation. There is no specific step or operation to accept a proposal, instead authority must be checked on the proposal_update_operation, and upon successful verification, the proposed operations must be applied.
The list of authorities required for accepting a proposal must depend on the list of proposed operations. The proposal itself must not carry any extra authorities or requirements.
Specifically, the proposal-related operations must require the following authorities:
the proposal_create_operation requires only the authority of the submitter
the proposal_update_operation which adds an approval requires the authority of the approver
the proposal_delete_operation requires the authority of the veto-giver, which must be a required authority on at least one operation of the affected proposal.
Other operations have different authority requirements.
There are three kinds of approvals that must be tracked for each operation: owner approvals, active approvals, and key approvals. Each operation must specify its required approvals of each kind separately.
Fees must be associated with operations, not proposals. However, the operations to create or update a proposal must carry their own fees, for which the payer must be chosen when creating the operation. Each of these transactions must carry a 20 unit fee plus a price per kilobyte.
The fees for the operations inside the proposal must be determined by operation. For Peerplays-related ones, like creating a sport, the fee is fixed to 1 unit (equal to GRAPHENE_BLOCKCHAIN_PRECISION) and must be paid by the witness account.
List of operations and their associated proposals:
SON report down (son_report_down) must be checked for timestamps stored in SON statistics object to confirm that SON is down (missed two heartbeats)
SON De-register (son_delete_operation) must be checked for total downtime stored in SON statistics objects to confirm that SON has been in maintenance for too long and must be de-registered/deleted
SON wallet update (son_wallet_update_operation) must be checked against active SONs to find matching transaction data. 2/3rds of active sons must confirm a match for a successful check
Deposit (son_wallet_deposit_create_operation) must not required proposal for object creation, but must be checked to verify that parameters are correct (same as in existing object), an active SON is creating the object, and only the expected son is confirming the transaction.
Process Deposit (son_wallet_deposit_process_operation) +asset_issue_operation - check critical values from son_wallet_deposit_object are identical to critical values from sidechain transaction. Minimum mandatory checks are: check sender and amount. Depending on sidechain, checks of other values may be warranted (Bitcoin - vout and number of transaction confirmations, Peerplays - exchange rate)
Transfer (transfer_operation) - TBD
Withdrawal (son_wallet_withdraw_create_operation) must not require a proposal for object creation, however, must be checked to verify that parameters are correct (same as in existing object), an active SON is creating the object, and only the expected son is confirming the transaction
Process Withdrawal (son_wallet_withdraw_process_operation) + asset_reserve_operation - check critical values from son_wallet_withdraw_object are identical to critical values from sidechain transaction. Minimum mandatory checks are: check sender and amount. Depending on sidechain, checks of other values may be warranted (Bitcoin - vout and number of transaction confirmations, Peerplays - exchange rate)
Sidechain transaction creation (sidechain_transaction_create_operation) must be checked to verify that given object id is already created
List of Graphene operations
The purpose of this document is to outline various scenarios in which SONs will be switched from the top 2/3rd and also among the top 15 minimum ACTIVE SONs.
Scope
The functional requirement listed in this document will be limited to the multi-sig key change scenarios only.
The Bitcoin Sidechain functionality has been implemented in the Peerplays blockchain but it doesn't take into account, the change of SONs. As per the current implementation of Sidechain, a multisig bitcoin wallet will be created on the bitcoin blockchain to hold the bitcoins that have been deposited into the pBTC accounts of the Peerplays users. Every SON will have a bitcoin transaction signing key for this multisig bitcoin wallet and will be required to sign any withdrawal transaction. When a SONs changes, the transaction signing key of the outgoing SON needs to be removed from the multisig bitcoin wallet and the key of the incoming SON needs to be added. The suggested proposal is to make the Sidechain code available as a plugin and assign the responsibility for running the sidechain code to separate nodes called the Sidechain Operating Nodes (SONs).
Various scenarios are outlined in the Scenarios section
The SONs has a ranking & grouping. The ranking is depending on the total effective stake of the votes received. We can have infinitely many SONs and rankings. The top 15 nodes aka ACTIVE nodes are the ones which are mandated by the SON implementation. ie at any point of time, there has to be 15 nodes for the SON feature to be operational. Apart from the ACTIVE group of top 15, we also have a 2/3rd top ranked SONs interms of votes which signs the transactions.
Any time there is a change to active SON list, a change to primary wallet scripts will be triggered. Therefore any change to active SONs list must result in creation of new primary wallet using public keys of SONs that remain active after the change. The reason for this is that primary wallet is created based on public keys of all active sons, when the composition of active SON list changes, it affects what keys are associated with the primary wallet.
At each maintenance intervals, list of candidates for active SONs is compared to list of current active SONs, if lists are different, list of current active SONs is understood to change and thus a new primary wallet must be generated.
Scenarios below are examples of changes that may impact active SONs list and thus trigger re-creation of primary wallet using public keys of SONs on active SONs list.
In this scenario the SONs will change their ranking and order but the top 2/3rd SONs will remain the same. This means, if there are 15 SONs and the 2/3rd is 10 SONs, the rank of the 10 SONs will be changed. But it will not have any impact on the multi-sig wallet. On using the list_sons will provide the new order.
During design, if possible its recommended to have invoke the immediate ranking change only in the case of a change involving the multi-signature key change. ie, this particular scenario can be ignored until the first deposit transaction happens. This will induce a slight delay in the display of ranking of the SONs for the reporting purposes.
This scenario addresses the normal case where one or more of the top 2/3rd SONs loses votes and they moves out of the top 2/3rd.
An example scenario is with 15 ACTIVE SONs where the top 10 are forming the 2/3rd quorum. When one of them loses votes, an ACTIVE node or a node outside of TOP 15 ACTIVE nodes replaces its position.
This scenario would trigger:
creation of a new Bitcoin address
move the Bitcoin (BTC) balances to the new address which is controlled by the new set of top SONs
The deposit and transfer APIs of the SON should return new multi-signature wallet address
If an ACTIVE SON receives or loses votes, its effective stake can change. This can trigger the ranking change. The change will be executed at the next son_maintanance_interval` , ie 24 hours or during the next deposit/withdraw operation whichever comes first.
Ranking changes in the list of SONs must result in creation of new multi-signature wallet using public keys of new SONs. Balances are then transferred to the new address.
Note that any changes to list of SONs must result in new wallet being generated and balances transferred to new wallet address.
6.4 Ranking Change - Disabling an ACTIVE SON
If an ACTIVE SON disables its node, another node has to replace it.
This can trigger the ranking change. The change will be executed at the next son_maintanance_interval` , ie 24 hours or during the next deposit/withdraw operation whichever comes first.
Ranking changes in the list of SONs must result in creation of new multi-signature wallet using public keys of new SONs. Balances are then transferred to the new address.
In this scenario, an ACTIVE SON but not in the top 2/3rd in terms of cumulative votes received goes down.
SON goes down/offline
The SON network records this
Upon completion of 12 hours after the SON going down/offline event is recorded, the ranking change is triggered
The Ranking change will be executed on the first deposit transaction or once in 24 hours whichever comes first.
Ranking changes in the list of SONs must result in creation of new multi-signature wallet using public keys of new SONs. Balances are then transferred to the new address.
6.6. A top 2/3rd SON goes offline
A high stake SON or a group of SONs goes offline without notice. This scenario or slowness is often observed during large scale internet routing attacks involving BGP poisoning or a data center maintenance where a group of servers becomes unreachable. (This often happens when certain German data center performs an upgrade or maintenance).
If we have ACTIVE SONs, and if need to perform a key change before the on the maintenance interval or before the next deposit transaction is requested, we can proceed with the change of keys
Upon such a change the funds has to be transferred to the new wallet created
The fund transfer will be possible if the remaining SONs who originally signed the transaction has enough authority (weight) to perform the withdraw operation on the old wallet
If change of keys occurs for any SONs, this event must must result in creation of new multi-signature wallet using new SON keys. Balances are then transferred to the new address.
If a SON part of the multi-signature wallet creation with a large stake enough to trigger change in the keys, the maintenance mode should trigger a change in the ranking of the SONs & also a change in the keys.
To avoid frequent key changes, the key change can be handled upon the first deposit or withdrawal. The deposit and withdrawal operations to the SON should be made via calling respective APIs to make this possible.
IMPORTANT: The time taken for the wallet change operation should be captured and we need to take this account for fine tuning the strategy for key changes. This is something that we can't easily predict right now, but needs to test and verify.
This scenario must trigger creation of new wallet using SON public keys, and transfer of balance to new wallet address due to change in SON composition and public keys.
This approach is done at the cost of status change at the front-end, but to avoid un-necessary operations in the chain
The purpose of this document is to outline functional specifications for monitoring bitcoin network and handling deposits. Result of a deposit is conversion of Bitcoin (BTC) to Peerplays assets (pBTC).
Sidechain operating node will monitor Bitcoin network for events of interest, namely transfer of assets to a Peerplays address. When transfer happens, sidechain will process it, in order to pick up information needed to handle it. Handling deposits will create certain amount of tokens on a Peerplays network. This amount will match the amount of assets on target sidechain by predefined exchange rate.
Specific functions covered include:
monitor transactions to a designated sidechain user address
handle deposit via creation of sidechain event data
create & confirm object proposals
conversion of BTC to pBTC based on defined exchange rate, with applicable fees
NOTE: Deposit handling requirements are not final.
Deposit handling will consist of two parts, a BTC Event Listener and a BTC Event Handler. Listener can identify and report new block, a transaction, or filtered single event (like specific operation involving specific address). We have identified three (3) distinct scenarios describing how deposits and withdrawals may be implemented. Scenarios are outlined in this article:
Requirements below are describing functional specifications based on Scenario 1 - Multi-signature primary wallet controlled by SON network, holding all the funds. All transfers are made to and from this multi-signature wallet.
Described here is the process of monitoring deposit address and processing transactions that occur in relation to target address.
pBTC token issue is initiated by Sidechain Listener identifying a Bitcoin deposit, passing information to Sidechain Handler .
Note that steps 2 through 14 are described in detail in BTC Transaction Signing functional specification.
Steps involved:
User initiates deposit to convert BTC to pBTC
Listener identifies that a BTC transaction is initiated
Listener passes event data to handler
Handler receives event data and creates an object (normally SON Wallet Object, SON Wallet Deposit Object or SON Wallet Withdraw Object)
To facilitate conversion of bitcoin in to peerplays tokens, SON must include an event listener and an event handler mechanism to identify specific types of transactions and handle them accordingly. Proposed approach uses multi-signature Primary Wallet controlled by SON network, holding all the funds. All transfers are made to and from this multi-signature wallet.
Current deposit address implementation is Timelocked-one-or-weighted-multisig
SON must be able to create/update Peerplays multisig account, and create/re-create Bitcoin multisig address controlled by active SONs.
The SONs may change at any maintenance interval when the votes are tallied and the existing SONs are voted out. Since, the bitcoin public keys of the SONs will be used to create the multisig bitcoin wallet, their public keys will have to be changed in order to operate the multisig bitcoin wallet. System must transfer the funds from the old wallet to the new wallet every time an SON changes and incur associated bitcoin transaction fees.
To reduce this additional cost, an m-of-n multisig bitcoin wallet will be created with signatures of 2/3rd SONs required for a bitcoin transaction. Change of public key for the SON in the multisig bitcoin wallet is not needed until 1/3rd of the SONs changes. Once, 1/3rd of the initial SONs changes, we must create a new multisig bitcoin wallet with the public keys of the current SONs and transfer the funds from the previous wallet to the newly created multisig bitcoin wallet.
Requirements below assume use of multi-signature primary wallet controlled by SON network, holding all the funds. All transfers are made to and from this multi-signature wallet.
SON must be able to keep the history records of active primary wallets, duration of activity period, and the SONs who control the wall at the time of creation.
SON must include a Bitcoin event listener which monitors a designated Bitcoin address registered as a sidechain user address for deposits. Specifically, listener uses Bitcoin node interface for monitoring changes in the blockchain
Listener must be able to recognize a change that signifies a deposit event and capture the following data associated with each transaction of this type:
Transaction unique identifier
Transfer operation’s source address
Transfer operation’s target address
Transfer amount
Following identifying a deposit transaction, Listener must check the number of active SONs to verify that a minimum of 5 SONs are active. If minimum is not met, deposit transaction must be stored for processing until minimum number of active SONs becomes available.
Detailed end-to-end functional specifications for handling and signing BTC transactions are posted in the Functional Specifications - BTC Transaction Processing & Signing spec. In summary, this occurs as follows:
SON must include a Bitcoin event handler which uses information supplied by the Listener to perform a specific operation that’s based on transaction type submitted by listener. When handler receives notification of Deposit transaction from the Listener, sidechain_event_data must be received and passed to sidechain_event_data_received.
System must then create a SON Wallet Deposit Object, which upon creation will be processed by all available SONs to verify its data. To verify object, system must check local data of each SON against object data on the side chain. Object must be deemed valid when its data is confirmed, and rejected when its data cannot be confirmed. Transaction terminates if object data is not confirmed during this check.
Successful object verification results in issuance of transaction create proposal that is based on confirmed object and includes some of its data (specifically, a reference to the object). Created sidechain transaction object must contain reference to the sidechain where it should be processed, reference to the object it is created for, sidechain transaction body, list of expected signers, list of received signatures, and the helper fields for calculating signature weights.
This proposal must be verified by SONs, which is performed by verifying referred object against locally re-created transaction data. If data does not match, proposal will be deleted from proposal list and transaction won’t be completed. If data matches, system must approve the proposal. Approved proposals must result in object being published on the chain.
When the object is published on the chain, SONs specified on the list of expected signers must begin processing it in parallel. Note that SONs specified as signers must sign the transaction as long as they are online, disregarding their status (thus SON in any status must sign the transaction). Once enough signatures hve been collected, transaction is marked as ‘Completed’.
When scheduled SON detects that a sidechain transaction object has been completed, it must collect all data from the sidechain transaction object, compile it, convert to a format that is ready for transmission to Bitcoin network, and send this transaction to the Bitcoin network.
SON must start conversion of deposit amount from bitcoin into peerplay tokens following deposit confirmation. Conversion operation must calculate btc to ppy conversion using 1:1 rate. Conversion is completed by sending funds from bitcoin address (sidechain user address for deposits) to primary wallet (bitcoin multisig address).
User will receive peerplays core assets matching the amount of deposited bitcoin.
In some cases a transaction will not be processed by SONs (such as when active SONs threshold is not met), which will cause funds to wait until required number of active SONs become available. System must allow users to initiate refunds of their transactions.
Refund scenario must adhere to same rules as regular bitcoin transaction:
User needs transaction id for the transaction they wish to refund
User creates another transaction using transaction id of transaction they want to refund to move funds to their own address
User signs the transaction using a private key that matches the public key he provided in sidechain address mapping
Transaction is pushed to bitcoin network and user is refunded once transaction is processed
This deposit address implementation type allows to send funds from this address with 2/3 weights of SON votes (like in Primary Wallet) or with single user signature. To create such address we need:
1) user public key
2) all SONs public keys
3) every SON weight
Note: This is the current implementation of the Deposit address.
This address type is implemented by btc_one_or_weighted_multisig_address class.
pBTC is a peerplay Blockchain Asset, which represents users’ balances in Bitcoin on Peerplays blockchain. Having a balance of 1 pBTC would mean having it backed by the same amount of Bitcoin on a Witness-controlled Multisig Wallet. New pBTC are NOT ISSUED by OWNER with issue operation. New pBTC are issued strictly in relation with Deposit operations.
PW (Primary Wallet) is the main Multisig Bitcoin Wallet.
Multi-signature (multisig) refers to requiring more than one key to authorize a Bitcoin transaction. It is generally used to divide up responsibility for possession of bitcoins.
sign transactions
withdraw bitcoin for conversion into Peerplays tokens
Object is checked by by all active SONs to compare object data from the chain against data generated by each SON.
If data does not match, transaction is terminated
If data matches, object is deemed ‘Confirmed'. Proceed to next step
Handler checks the number of active SONs
If active SONs are > 5, proceed to next step
If active SONs are < 5, store transaction for processing until required number of active SONs is available (this step will be repeated until SON availability requirement is met)
Issue proposal for for sidechain transaction create operation
Active SONs create local copies of transaction data to be verified against proposal
Proposal is verified by active sons by comparing local copies of transaction data to proposal
If data does not match, proposal is not approved and will eventually expire thus terminating the transaction
If data matches, proposal is approved. Proceed to next step
Transaction object containing a list of SONs expected to sign is created and published to the sidechain. List of SONs will be created based on list of active SONs
Expected SON signers initiate parallel processing of transaction. Offline SONs will not participate in signing and only the online SONs (regardless of status) will sign the transaction
Sign transaction
Each signing SON adds its signature
Each signing SON is added to list or received signatures
Operation evaluator checks signatures to determine if latest signature is the last signature required to complete transaction signing
If no, repeat this step after each SON’s signature
If yes, mark transaction object as ‘Completed’ (helper field complete = true)
Scheduled SON detects completed transaction object
Transaction is converted to a readable format and sent to Bitcoin network
User receives pBTC amount
Deposit is marked as processed
Transaction fee (for transfer operation)
Specific functions covered include:
monitor transactions to a designated sidechain user address
handle withdrawal via creation of sidechain event data
create & confirm object proposals
conversion of pBTC to BTC using 1:1 ratio
sign transactions
withdraw bitcoin for conversion into peerplay tokens
Withdrawal handling will consist of listener and handler functionality. Listener can identify and report new block, a transaction, or filtered single event (like specific operation involving specific address). Handlers will process the event identified by listener.
We have identified three (3) distinct scenarios describing how deposits and withdrawals may be implemented. Scenarios are outlined in this article:
Requirements below are describing functional specifications based on Scenario 1 - Multisignature primary wallet controlled by SON network, holding all the funds. All transfers are made to and from this multisignature wallet.
Described here is the process of monitoring withdrawal address and processing transactions that occur in relation to target address.
pBTC token issue is initiated by Sidechain Listener identifying a Bitcoin withdrawal, passing information to Sidechain Handler .
Steps involved:
User initiates withdrawal to convert pBTC to BTC
Listener identifies withdrawal type change in the block chain
Listener passes event data to handler
Handler receives event data and creates an object (normally SON Wallet Object, SON Wallet Deposit Object or SON Wallet Withdraw Object)
Object is checked by by all active SONs to compare object data from the chain against data generated by each SON.
If data does not match, transaction is terminated
If data matches, object is deemed ‘Confirmed'. Proceed to next step
Handler checks the number of active SONs
If active SONs are > 5, proceed to next step
If active SONs are < 5, store transaction for processing until required number of active SONs is available (this step will be repeated until SON availability requirement is met)
Issue proposal for for sidechain transaction create operation
Active SONs create local copies of transaction data to be verified against proposal
Proposal is verified by active sons by comparing local copies of transaction data to proposal
If data does not match, proposal is not approved and will eventually expire thus terminating the transaction
If data matches, proposal is approved. Proceed to next step
Transaction object containing a list of SONs expected to sign is created and published to the sidechain. List of SONs will be created based on list of active SONs
Expected SON signers initiate parallel processing of transaction. Offline SONs will not participate in signing and only the online SONs (regardless of status) will sign the transaction
Sign transaction
Each signing SON adds its signature
Each signing SON is added to list or received signatures
Operation evaluator checks signatures to determine if latest signature is the last signature required to complete transaction signing
Scheduled SON detects completed transaction object
Transaction is converted to a readable format and sent to Bitcoin network
User receives BTC amount
Withdrawal is marked as processed
To facilitate conversion of peerplays tokens into bitcoin, SON must include an event listener and an event handler mechanisms to identify specific types of transactions and handle them accordingly. Proposed approach uses multisignature Primary Wallet controlled by SON network, holding all the funds. All transfers are made to and from this multisignature wallet.
Refer to Functional Specification - Bitcoin Deposit Handling for wallet information
Current deposit address implementation is Timelocked-one-or-weighted-multisig
SON must include a Bitcoin event listener which monitors a designated Bitcoin address registered as a sidechain user address for withdrawals Specifically, listener uses Bitcoin node interface for monitoring changes in the block changes.
Listener must be able to recognize a change that signifies a withdrawal event and capture the following data associated with each transaction of this type:
Transaction unique identifier
Transfer operation’s source address
Transfer operation’s target address
Transfer amount
Following identifying a withdrawal transaction, Listener must check the number of active SONs to verify that a minimum of 5 SONs are active. If minimum is not met, withdrawal transaction must be stored for processing until minimum number of active SONs becomes available.
SON must include a Bitcoin event handler which uses information supplied by the Listener to perform a specific operation that’s based on transaction type submitted by listener. When handler receives notification of Withdrawal transaction from the Listener, sidechain_event_data must be received and passed to sidechain_event_data_received. Received sidechain event data must then be used to create proposal for a withdrawal descriptor object son_wallet_withdrawal_object.
System must then create a SON Wallet Withdrawal Object, which upon creation will be processed by all available SONs to verify its data. To verify object, system must check local data of each SON against object data on the side chain. Object must be deemed valid when its data is confirmed, and rejected when its data cannot be confirmed. Transaction terminates if object data is not confirmed during this check.
Successful object verification results in issuance of transaction create proposal that is based on confirmed object and includes some of its data (specifically, a reference to the object). Created sidechain transaction object must contain reference to the sidechain where it should be processed, reference to the object it is created for, sidechain transaction body, list of expected signers, list of received signatures, and the helper fields for calculating signature weights.
This proposal must be verified by SONs, which is performed by verifying referred object against locally re-created transaction data. If data does not match, proposal will be deleted from proposal list and transaction won’t be completed. If data matches, system must approve the proposal. Approved proposals must result in object being published on the chain.
When the object is published on the chain, SONs specified on the list of expected signers must begin processing it in parallel. Note that SONs specified as signers must sign the transaction as long as they are online, disregarding their status (thus SON in any status must sign the transaction). Once enough signatures hve been collected, transaction is marked as ‘Completed’.
When scheduled SON detects that a sidechain transaction object has been completed, it must collect all data from the sidechain transaction object, compile it, convert to a format that is ready for transmission to Bitcoin network, and send this transaction to the Bitcoin network.
SON must start conversion of withdrawal amount from peerplay tokens into Bitcoin following withdrawal confirmation. Conversion operation must calculate pBTC to BTC conversion using 1:1 rate. Conversion is completed by sending funds from bitcoin address (sidechain user address for withdrawals) to primary wallet (bitcoin multisig address).
User will receive bitcoin corresponding to amount of converted pBTC. Lastly, scheduled SON must mark son_wallet_withdrawal_object as processed
In some cases a transaction will not be processed by SONs (such as when active SONs threshold is not met), which will cause funds to wait until required number of active SONs become available. System must allow users to initiate refunds of their transactions.
Refund scenario must adhere to same rules as regular bitcoin transaction:
User needs transaction id for the transaction they wish to refund
User creates another transaction using transaction id of transaction they want to refund to move funds to their own address
User signs the transaction using a private key that matches the public key he provided in sidechain address mapping
Transaction is pushed to bitcoin network and user is refunded once transaction is processed
This deposit address implementation type allows to send funds from this address with 2/3 weights of SON votes (like in Primary Wallet) or with single user signature. To create such address we need:
user public key
all SONs public keys
every SON weight
Note: This is the current implementation of the Deposit address.
This address type is implemented by btc_one_or_weighted_multisig_address class.
pBTC is a peerplay Blockchain Asset, which represents users’ balances in Bitcoin on PeerPlays blockchain. Having a balance of 1 pBTC would mean having it backed by the same amount of Bitcoin on a Witness-controlled Multisig Wallet. New pBTC are NOT ISSUED by OWNER with issue operation. New pBTC are issued strictly in relation with Deposit operations.
PW (Primary Wallet) is the main Multisig Bitcoin Wallet.
Multisignature (multisig) refers to requiring more than one key to authorize a Bitcoin transaction. It is generally used to divide up responsibility for possession of bitcoins.
If no, repeat this step after each SON’s signature
If yes, mark transaction object as ‘Completed’ (helper field complete = true)
The purpose of this document is to outline functional specifications for signing of any BTC transaction that occurs on the sidechain network.
Sidechain operating node will monitor Bitcoin network for events of interest, namely transfer of assets to a Peerplays address. When transfer happens, sidechain will process it, in order to pick up information needed to handle it. Handling of BTC transaction involves creation of various objects, proposals, verification and signing of the transaction before it is recorded on Bitcoin network.
SONs will handle BTC Deposits (conversion of BTC to pBTC) and withdrawals (conversion of pBTC to BTC).
We have identified three (3) distinct scenarios describing how deposits and withdrawals may be implemented. Scenarios are outlined in this article:
Requirements below are describing functional specifications based on Scenario 1 - Multisignature primary wallet controlled by SON network, holding all the funds. All transfers are made to and from this multisignature wallet.
This document outlines in detail how BTC transactions are handled by the sidechain network, regardless of transaction type.
Process overview below details typical steps in identifying and handling a BTC transaction.
Note that this process is transaction agnostic. For details surrounding specific transactions, check BTC Deposit and BTC Withdrawal requirements
Steps involved:
Listener identifies that a BTC transaction is initiated
Listener passes event data to handler
Handler receives event data and creates an object (normally SON Wallet Object, SON Wallet Deposit Object or SON Wallet Withdraw Object)
Object is checked by by all active SONs to compare object data from the chain against data generated by each SON.
All bitcoin transactions must undergo verification checks and signing by at least 5 active SONs before transaction is signed and sent to Bitcoin network.
SON must include a Bitcoin event listener which monitors a designated Bitcoin addresses reserved for deposits and withdrawals . Specifically, listener uses Bitcoin node interface for monitoring changes in the blockchain.
Listener must be able to recognize a change that signifies a bitcoin transaction and capture the following data associated with each transaction of this type:
Transaction unique identifier
Transfer operation’s source address
Transfer operation’s target address
Transaction amount
Following identifying a transaction, Listener must check the number of active SONs to verify that a minimum of 5 SONs are active. If minimum is not met, deposit transaction must be stored for processing until minimum number of active SONs becomes available.
SON must include a Bitcoin event handler which uses information supplied by the Listener to perform a specific operation that’s based on transaction type submitted by listener. Event handler’s purpose is to perform a series of actions such as operation creation, verification checks, transaction signing leading up to packing of transaction data and sending it to bitcoin network.
Receiving data from Listener
When handler receives transaction notification from listener from the Listener, sidechain_event_data must be received and passed to sidechain_event_data_received.
Object creation
System must then create an object based on the transaction type. Possible objects are:
Son Wallet Object - recreated on new set of SON voted into list of active SONs.
Son Wallet Deposit Object - created when deposit is detected.
Son Wallet Withdraw Object - created when withdraw is detected.
Following creation of any object, all available SONs must begin processing the object to verify that its data is correct. To verify object, system must check local data of each SON against object data on the side chain. Object must be deemed valid when its data is confirmed, and rejected when its data cannot be confirmed. Transaction terminates if object data is not confirmed during this check.
Proposal
Next, system must issue a proposal for sidechain transaction create operation based on confirmed object. Created sidechain transaction object must contain reference to the sidechain where it should be processed, reference to the object it is created for, sidechain transaction body, list of expected signers, list of received signatures, and the helper fields for calculating signature weights.
SONs must then verify the proposal by locally re-creating transaction data (inputs, outputs, transfer value, sender, receiver) from the referred object, and comparing this copy to proposal. If data does not match, proposal will be deleted from proposal list and transaction won’t be completed. If data matches, system must approve the proposal. Approved proposals must result in object being published on the chain.
Signing
When the object is published on the chain, SONs specified on the list of expected signers must begin processing it in parallel. Note that SONs specified as signers must sign the transaction as long as they are online, disregarding their status (thus SON in any status must sign the transaction).
Each SON that signs a transaction must sign with its own key and add its signature to the list o received signatures, pair with its son_id. SON weight will be added to the current_weight helper field.
When adding each signature, sidechain transaction sign operation evaluator must check whether or not this signature is the last one required to complete sidechain transaction signing. If it’s not the last required signature, check is performed again when next signature is processed. If it is the last expected signature, system must mark sidechain transaction object as completed (set helper field complete to true). Note that transactions in ‘Completed’ state will not accept any more signatures, and it is possible that some SONs will continue sending signatures which will not be accepted (because enough signatures have been recorded). This is because SONs work and send their signatures in parallel and are unaware of incoming signatures from other SONs.
Lastly, when scheduled SON detects that a sidechain transaction object has been completed, it must collect all data from the sidechain transaction object, compile it, convert to a format that is ready for transmission to Bitcoin network, and send this transaction to the Bitcoin network.
In some cases a transaction will not be processed by SONs (such as when active SONs threshold is not met), which will cause funds to wait until required number of active SONs become available. System must allow users to initiate refunds of their transactions.
Refund scenario must adhere to same rules as regular bitcoin transaction:
User needs transaction id for the transaction they wish to refund
User creates another transaction using transaction id of transaction they want to refund to move funds to their own address
User signs the transaction using a private key that matches the public key he provided in sidechain address mapping
Transaction is pushed to bitcoin network and user is refunded once transaction is processed
This deposit address implementation type allows to send funds with m-of-n SONs signatures or with single user signature. To create such address, system needs:
user public key
n represented by active SONs public keys
m represented by minimal required SONs signatures number.
When funds are being sent from this address, system must first check signature and complete transaction if signature check is successful. Otherwise system uses public keys of active SONs until minimum number of signature has been collected.
This address type is implemented by btc_one_or_m_of_n_multisig_address class.
This deposit address implementation type allows to send funds from this address with 2/3 weights of SON votes (like in Primary Wallet) or with single user signature. To create such address we need:
user public key
all SONs public keys
every SON weight
When funds are being sent from this address, system must first check if user signature is correct. When signature is correct, system completes the transaction. Otherwise, when signature is incorrect, system checks for 2/3 weights of SON votes to complete the transaction.
Note: This is the current implementation of the Deposit address.
This address type is implemented by btc_one_or_weighted_multisig_address class.
7.1.3 Timelocked-one-or-weighted-multisig
This deposit address implementation type allows to send funds from this address with 2/3 weights of SON votes (like in Primary Wallet) or with single user signature after some latency. To create such address system needs:
user public key,
used latency
all SONs public keys
every SON weight
When funds are being sent from this address, system must first check if user signature is correct. When signature is correct, system waits until latency is passed to complete the transaction. This differentiates this implementation option from simply one-or-weighted-multisig type. Otherwise, when signature is incorrect, system checks for 2/3 weights of SON votes to complete the transaction.
note: nSquence must be greater than or equal to latency
This address type is implemented by btc_timelocked_one_or_weighted_multisig_address class.
Transaction object
signed transaction
If data does not match, transaction is terminated
If data matches, object is deemed ‘Confirmed'. Proceed to next step
Handler checks the number of active SONs
If active SONs are > 5, proceed to next step
If active SONs are < 5, store transaction for processing until required number of active SONs is available (this step will be repeated until SON availability requirement is met)
Issue proposal for for sidechain transaction create operation
Active SONs create local copies of transaction data to be verified against proposal
Proposal is verified by active sons by comparing local copies of transaction data to proposal
If data does not match, proposal is not approved and will eventually expire thus terminating the transaction
If data matches, proposal is approved. Proceed to next step
Transaction object containing a list of SONs expected to sign is created and published to the sidechain. List of SONs will be created based on list of active SONs
Expected SON signers initiate parallel processing of transaction. Offline SONs will not participate in signing and only the online SONs (regardless of status) will sign the transaction
Sign transaction
Each signing SON adds its signature
Each signing SON is added to list or received signatures
Operation evaluator checks signatures to determine if latest signature is the last signature required to complete transaction signing
If no, repeat this step after each SON’s signature
If yes, mark transaction object as ‘Completed’ (helper field complete = true)
Scheduled SON detects completed transaction object
Transaction is converted to a readable format and sent to Bitcoin network
Transaction fee (for transfer operation)
class sidechain_transaction_object : public abstract_object<sidechain_transaction_object>
{
public:
static const uint8_t space_id = protocol_ids;
static const uint8_t type_id = sidechain_transaction_object_type;
sidechain_type sidechain;
object_id_type object_id;
std::string transaction;
std::vector<son_info> signers;
std::vector<std::pair<son_id_type, std::string>> signatures;
std::string sidechain_transaction;
uint32_t total_weight = 0;
uint32_t current_weight = 0;
uint32_t threshold = 0;
bool valid = false;
bool complete = false;
bool sent = false;
};[{
"id": "1.33.1",
"sidechain": "bitcoin",
"object_id": "1.29.0",
"transaction": "cHNidP8BAPcCAAAABTIvR/hoINpwrdMHX+E+8mD2VHUH6FNo3dSM6Zj/LDCVAAAAAAD/////cpDO5vkpGaDoVxqr34U4mMSOisJPKOKRmZzs0TtG5R8AAAAAAP////+CeCertGFFkLqCsLxmnsixdfaamoWkf+gon/zI4PRQqAAAAAAA/////6yLpx5Cs9XLFZlBGLpPbIJysTbWSbgHrLcAXw2egiVWAAAAAAD/////x3YsKjM4FYBOsAaEo54okcwYH8NSbEjpflPw3owJwwIAAAAAAP////8BQDRf9AAAAAAXqRRxjBH9wxXffPW/rhZpsGYZorm0IIcAAAAAAAAAAAAAAA==",
"signers": [{
"son_id": "1.27.0",
"weight": 1,
"signing_key": "TEST8TCQFzyYDp3DPgWZ24261fMPSCzXxVyoF3miWeTj6JTi2DZdrL",
"sidechain_public_keys": [[
"bitcoin",
"03456772301e221026269d3095ab5cb623fc239835b583ae4632f99a15107ef275"
]
]
},{
"son_id": "1.27.1",
"weight": 1,
"signing_key": "TEST82qv1LKFvwVKD9pg5JQf6qqwLcoeqUniQjWJ3wKTodyWa7gHUs",
"sidechain_public_keys": [[
"bitcoin",
"02d67c26cf20153fe7625ca1454222d3b3aeb53b122d8a0f7d32a3dd4b2c2016f4"
]
]
},{
"son_id": "1.27.2",
"weight": 1,
"signing_key": "TEST6xdp7MrEPnaNK9GuF3KTeTizgGN6JC5nPmxx81higFepSZ8N7r",
"sidechain_public_keys": [[
"bitcoin",
"025f7cfda933516fd590c5a34ad4a68e3143b6f4155a64b3aab2c55fb851150f61"
]
]
},{
"son_id": "1.27.3",
"weight": 1,
"signing_key": "TEST55j32Up75gHCxJBPN18vEytL9anDgEVFtsaCii38keGQG71X22",
"sidechain_public_keys": [[
"bitcoin",
"0228155bb1ddcd11c7f14a2752565178023aa963f84ea6b6a052bddebad6fe9866"
]
]
},{
"son_id": "1.27.4",
"weight": 1,
"signing_key": "TEST68bX5bB16GkEAig6w2WTh9NbM9nHa66CemnDRx2njRY9bbWXhU",
"sidechain_public_keys": [[
"bitcoin",
"037500441cfb4484da377073459511823b344f1ef0d46bac1efd4c7c466746f666"
]
]
},{
"son_id": "1.27.5",
"weight": 1,
"signing_key": "TEST7mtTyM2rD18xDTtLTxWhq6W6zFgAgPFu9KHSFNsfWJXZNT8Wc8",
"sidechain_public_keys": [[
"bitcoin",
"02ef0d79bfdb99ab0be674b1d5d06c24debd74bffdc28d466633d6668cc281cccf"
]
]
},{
"son_id": "1.27.6",
"weight": 1,
"signing_key": "TEST7RMDnipLkFaQ4vtDyVvgyCedRoxyT9JWpAoM9mrE7rwVSyezoB",
"sidechain_public_keys": [[
"bitcoin",
"0317941e4219548682fb8d8e172f0a8ce4d83ce21272435c85d598558c8e060b7f"
]
]
},{
"son_id": "1.27.7",
"weight": 1,
"signing_key": "TEST51nSJ2q1C9htnYWfTv73JxEc4nBWPNxJtUGPGpD4XwxeLzAd8t",
"sidechain_public_keys": [[
"bitcoin",
"0266065b27f7e3d3ad45b471b1cd4e02de73fc4737dc2679915a45e293c5adcf84"
]
]
},{
"son_id": "1.27.8",
"weight": 1,
"signing_key": "TEST8EmMMvQdAPzcnxymRUpbYdg8fArUY473QosCQpuPtWXxXtoNp4",
"sidechain_public_keys": [[
"bitcoin",
"023821cc3da7be9e8cdceb8f146e9ddd78a9519875ecc5b42fe645af690544bccf"
]
]
},{
"son_id": "1.27.9",
"weight": 1,
"signing_key": "TEST5815xbKy73Bx1LJWW1jg7GshWSEFWub3uoiEFP7FtP6z4YZtkU",
"sidechain_public_keys": [[
"bitcoin",
"0229ff2b2106b76c27c393e82d71c20eec32bcf1f0cf1a9aca8a237269a67ff3e5"
]
]
},{
"son_id": "1.27.10",
"weight": 1,
"signing_key": "TEST61qgG2v6JArygFiQCKypymxhBqg1wKmmbdkHeNkXhYDvkZmBtY",
"sidechain_public_keys": [[
"bitcoin",
"024d113381cc09deb8a6da62e0470644d1a06de82be2725b5052668c8845a4a8da"
]
]
},{
"son_id": "1.27.11",
"weight": 1,
"signing_key": "TEST6z33kHxQxyGvFWfpAnL3X3MvLtPEBknkNeFFJyk63PvRtaN1Xo",
"sidechain_public_keys": [[
"bitcoin",
"03df2462a5a2f681a3896f61964a65566ff77448be9a55a6da18506fd9c6c051c1"
]
]
},{
"son_id": "1.27.12",
"weight": 1,
"signing_key": "TEST55eCWenoKmZct5YvUYv7aphMmSVkroZTJZWFHGTVj8r8bKEPMd",
"sidechain_public_keys": [[
"bitcoin",
"02bafba3096f546cc5831ce1e49ba7142478a659f2d689bbc70ed37235255172a8"
]
]
},{
"son_id": "1.27.13",
"weight": 1,
"signing_key": "TEST5e4HXhA4yBEGzaXVyjuVabKhG1qGghi6rypvq5fLxAmU9XLRHT",
"sidechain_public_keys": [[
"bitcoin",
"0287bcbd4f5d357f89a86979b386402445d7e9a5dccfd16146d1d2ab0dc2c32ae8"
]
]
},{
"son_id": "1.27.14",
"weight": 1,
"signing_key": "TEST89qMuZejYeeGvjr3bMEcGyvhD4dyUchmxbLNUBFbPodqJKJPZc",
"sidechain_public_keys": [[
"bitcoin",
"02053859d76aa375d6f343a60e3678e906c008015e32fe4712b1fd2b26473bdd73"
]
]
}
],
"signatures": [[
"1.27.0",
"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"
],[
"1.27.1",
""
],[
"1.27.2",
"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"
],[
"1.27.3",
""
],[
"1.27.4",
"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"
],[
"1.27.5",
"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"
],[
"1.27.6",
"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"
],[
"1.27.7",
"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"
],[
"1.27.8",
"cHNidP8BAPcCAAAABTIvR/hoINpwrdMHX+E+8mD2VHUH6FNo3dSM6Zj/LDCVAAAAAAD/////cpDO5vkpGaDoVxqr34U4mMSOisJPKOKRmZzs0TtG5R8AAAAAAP////+CeCertGFFkLqCsLxmnsixdfaamoWkf+gon/zI4PRQqAAAAAAA/////6yLpx5Cs9XLFZlBGLpPbIJysTbWSbgHrLcAXw2egiVWAAAAAAD/////x3YsKjM4FYBOsAaEo54okcwYH8NSbEjpflPw3owJwwIAAAAAAP////8BQDRf9AAAAAAXqRRxjBH9wxXffPW/rhZpsGYZorm0IIcAAAAAAAEBIOB7mjsAAAAAF6kUu2OAlgSLheHVdDVz4c9KRZPNfS6HIgICOCHMPae+nozc648Ubp3deKlRmHXsxbQv5kWvaQVEvM9HMEQCIG7XfZoZLChN0eDMWBs9ENJ95G7gWWBTZtEcJK6lsrBaAiBU8LSB4LUQyZMw5xVK1H1Amyz8PusS/JycHN2aTYz3xgEBBCIAIF/NzjxitHdVO43JV6k1rdqDBcvUekCPB9LLhn1YgnnrAQX9AQJbIQNFZ3IwHiIQJiadMJWrXLYj/COYNbWDrkYy+ZoVEH7ydSEC1nwmzyAVP+diXKFFQiLTs661OxItig99MqPdSywgFvQhAl98/akzUW/VkMWjStSmjjFDtvQVWmSzqrLFX7hRFQ9hIQIoFVux3c0Rx/FKJ1JWUXgCOqlj+E6mtqBSvd661v6YZiEDdQBEHPtEhNo3cHNFlRGCOzRPHvDUa6we/Ux8RmdG9mYhAu8Neb/bmasL5nSx1dBsJN69dL/9wo1GZjPWZozCgczPIQMXlB5CGVSGgvuNjhcvCozk2DziEnJDXIXVmFWMjgYLfyECZgZbJ/fj061FtHGxzU4C3nP8RzfcJnmRWkXik8Wtz4QhAjghzD2nvp6M3OuPFG6d3XipUZh17MW0L+ZFr2kFRLzPIQIp/yshBrdsJ8OT6C1xwg7sMrzx8M8amsqKI3Jppn/z5SECTREzgcwJ3rim2mLgRwZE0aBt6CvicltQUmaMiEWkqNohA98kYqWi9oGjiW9hlkplVm/3dEi+mlWm2hhQb9nGwFHBIQK6+6MJb1RsxYMc4eSbpxQkeKZZ8taJu8cO03I1JVFyqCECh7y9T101f4moaXmzhkAkRdfppdzP0WFG0dKrDcLDKughAgU4Wddqo3XW80OmDjZ46QbACAFeMv5HErH9KyZHO91zX64AAQEg4HuaOwAAAAAXqRS7Y4CWBIuF4dV0NXPhz0pFk819LociAgI4Icw9p76ejNzrjxRund14qVGYdezFtC/mRa9pBUS8z0cwRAIgIQ0drYXPc4Ms+XNfuvMGB/R27XuT6HZ3UD+EWEbq31ICIF676/s0cXs8v8mZPo/5XhpPcwFCmJQ/t1RpVYd5fbA/AQEEIgAgX83OPGK0d1U7jclXqTWt2oMFy9R6QI8H0suGfViCeesBBf0BAlshA0VncjAeIhAmJp0wlatctiP8I5g1tYOuRjL5mhUQfvJ1IQLWfCbPIBU/52JcoUVCItOzrrU7Ei2KD30yo91LLCAW9CECX3z9qTNRb9WQxaNK1KaOMUO29BVaZLOqssVfuFEVD2EhAigVW7HdzRHH8UonUlZReAI6qWP4Tqa2oFK93rrW/phmIQN1AEQc+0SE2jdwc0WVEYI7NE8e8NRrrB79THxGZ0b2ZiEC7w15v9uZqwvmdLHV0Gwk3r10v/3CjUZmM9ZmjMKBzM8hAxeUHkIZVIaC+42OFy8KjOTYPOISckNchdWYVYyOBgt/IQJmBlsn9+PTrUW0cbHNTgLec/xHN9wmeZFaReKTxa3PhCECOCHMPae+nozc648Ubp3deKlRmHXsxbQv5kWvaQVEvM8hAin/KyEGt2wnw5PoLXHCDuwyvPHwzxqayoojcmmmf/PlIQJNETOBzAneuKbaYuBHBkTRoG3oK+JyW1BSZoyIRaSo2iED3yRipaL2gaOJb2GWSmVWb/d0SL6aVabaGFBv2cbAUcEhArr7owlvVGzFgxzh5JunFCR4plny1om7xw7TcjUlUXKoIQKHvL1PXTV/iahpebOGQCRF1+ml3M/RYUbR0qsNwsMq6CECBThZ12qjddbzQ6YONnjpBsAIAV4y/kcSsf0rJkc73XNfrgABASDgFs0dAAAAABepFLtjgJYEi4Xh1XQ1c+HPSkWTzX0uhyICAjghzD2nvp6M3OuPFG6d3XipUZh17MW0L+ZFr2kFRLzPRzBEAiBrag5w2+qbYLy1psk5PXIZu9lgFrWxcPEGz8FNGPSC5QIgIDDKvfcX9Ow/Gpm0l8qTfSyRg0IW1V7WVT5MEUGTez0BAQQiACBfzc48YrR3VTuNyVepNa3agwXL1HpAjwfSy4Z9WIJ56wEF/QECWyEDRWdyMB4iECYmnTCVq1y2I/wjmDW1g65GMvmaFRB+8nUhAtZ8Js8gFT/nYlyhRUIi07OutTsSLYoPfTKj3UssIBb0IQJffP2pM1Fv1ZDFo0rUpo4xQ7b0FVpks6qyxV+4URUPYSECKBVbsd3NEcfxSidSVlF4AjqpY/hOpragUr3eutb+mGYhA3UARBz7RITaN3BzRZURgjs0Tx7w1GusHv1MfEZnRvZmIQLvDXm/25mrC+Z0sdXQbCTevXS//cKNRmYz1maMwoHMzyEDF5QeQhlUhoL7jY4XLwqM5Ng84hJyQ1yF1ZhVjI4GC38hAmYGWyf349OtRbRxsc1OAt5z/Ec33CZ5kVpF4pPFrc+EIQI4Icw9p76ejNzrjxRund14qVGYdezFtC/mRa9pBUS8zyECKf8rIQa3bCfDk+gtccIO7DK88fDPGprKiiNyaaZ/8+UhAk0RM4HMCd64ptpi4EcGRNGgbegr4nJbUFJmjIhFpKjaIQPfJGKlovaBo4lvYZZKZVZv93RIvppVptoYUG/ZxsBRwSECuvujCW9UbMWDHOHkm6cUJHimWfLWibvHDtNyNSVRcqghAoe8vU9dNX+JqGl5s4ZAJEXX6aXcz9FhRtHSqw3CwyroIQIFOFnXaqN11vNDpg42eOkGwAgBXjL+RxKx/SsmRzvdc1+uAAEBIOAWzR0AAAAAF6kUu2OAlgSLheHVdDVz4c9KRZPNfS6HIgICOCHMPae+nozc648Ubp3deKlRmHXsxbQv5kWvaQVEvM9HMEQCIENMt8HnZQ94xTBrmhofJUudrJy8xBG0+w9905RXnMdhAiApUAfNPjHzDQbM3P6qh3E0qr8/EkiyUaTLd2Eo64rrWQEBBCIAIF/NzjxitHdVO43JV6k1rdqDBcvUekCPB9LLhn1YgnnrAQX9AQJbIQNFZ3IwHiIQJiadMJWrXLYj/COYNbWDrkYy+ZoVEH7ydSEC1nwmzyAVP+diXKFFQiLTs661OxItig99MqPdSywgFvQhAl98/akzUW/VkMWjStSmjjFDtvQVWmSzqrLFX7hRFQ9hIQIoFVux3c0Rx/FKJ1JWUXgCOqlj+E6mtqBSvd661v6YZiEDdQBEHPtEhNo3cHNFlRGCOzRPHvDUa6we/Ux8RmdG9mYhAu8Neb/bmasL5nSx1dBsJN69dL/9wo1GZjPWZozCgczPIQMXlB5CGVSGgvuNjhcvCozk2DziEnJDXIXVmFWMjgYLfyECZgZbJ/fj061FtHGxzU4C3nP8RzfcJnmRWkXik8Wtz4QhAjghzD2nvp6M3OuPFG6d3XipUZh17MW0L+ZFr2kFRLzPIQIp/yshBrdsJ8OT6C1xwg7sMrzx8M8amsqKI3Jppn/z5SECTREzgcwJ3rim2mLgRwZE0aBt6CvicltQUmaMiEWkqNohA98kYqWi9oGjiW9hlkplVm/3dEi+mlWm2hhQb9nGwFHBIQK6+6MJb1RsxYMc4eSbpxQkeKZZ8taJu8cO03I1JVFyqCECh7y9T101f4moaXmzhkAkRdfppdzP0WFG0dKrDcLDKughAgU4Wddqo3XW80OmDjZ46QbACAFeMv5HErH9KyZHO91zX64AAQEg4FyQQQAAAAAXqRS7Y4CWBIuF4dV0NXPhz0pFk819LociAgI4Icw9p76ejNzrjxRund14qVGYdezFtC/mRa9pBUS8z0cwRAIgPG7yVEVK4pgr0M6J/9ZRN8Qk9CAk2qDKBFrmP8MtQIACIBo9RxYn0WIPrWamqFQlQB7rWT569LpFO74R3K2h0U0wAQEEIgAgX83OPGK0d1U7jclXqTWt2oMFy9R6QI8H0suGfViCeesBBf0BAlshA0VncjAeIhAmJp0wlatctiP8I5g1tYOuRjL5mhUQfvJ1IQLWfCbPIBU/52JcoUVCItOzrrU7Ei2KD30yo91LLCAW9CECX3z9qTNRb9WQxaNK1KaOMUO29BVaZLOqssVfuFEVD2EhAigVW7HdzRHH8UonUlZReAI6qWP4Tqa2oFK93rrW/phmIQN1AEQc+0SE2jdwc0WVEYI7NE8e8NRrrB79THxGZ0b2ZiEC7w15v9uZqwvmdLHV0Gwk3r10v/3CjUZmM9ZmjMKBzM8hAxeUHkIZVIaC+42OFy8KjOTYPOISckNchdWYVYyOBgt/IQJmBlsn9+PTrUW0cbHNTgLec/xHN9wmeZFaReKTxa3PhCECOCHMPae+nozc648Ubp3deKlRmHXsxbQv5kWvaQVEvM8hAin/KyEGt2wnw5PoLXHCDuwyvPHwzxqayoojcmmmf/PlIQJNETOBzAneuKbaYuBHBkTRoG3oK+JyW1BSZoyIRaSo2iED3yRipaL2gaOJb2GWSmVWb/d0SL6aVabaGFBv2cbAUcEhArr7owlvVGzFgxzh5JunFCR4plny1om7xw7TcjUlUXKoIQKHvL1PXTV/iahpebOGQCRF1+ml3M/RYUbR0qsNwsMq6CECBThZ12qjddbzQ6YONnjpBsAIAV4y/kcSsf0rJkc73XNfrgAA"
],[
"1.27.9",
"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"
],[
"1.27.10",
"cHNidP8BAPcCAAAABTIvR/hoINpwrdMHX+E+8mD2VHUH6FNo3dSM6Zj/LDCVAAAAAAD/////cpDO5vkpGaDoVxqr34U4mMSOisJPKOKRmZzs0TtG5R8AAAAAAP////+CeCertGFFkLqCsLxmnsixdfaamoWkf+gon/zI4PRQqAAAAAAA/////6yLpx5Cs9XLFZlBGLpPbIJysTbWSbgHrLcAXw2egiVWAAAAAAD/////x3YsKjM4FYBOsAaEo54okcwYH8NSbEjpflPw3owJwwIAAAAAAP////8BQDRf9AAAAAAXqRRxjBH9wxXffPW/rhZpsGYZorm0IIcAAAAAAAEBIOB7mjsAAAAAF6kUu2OAlgSLheHVdDVz4c9KRZPNfS6HIgICTREzgcwJ3rim2mLgRwZE0aBt6CvicltQUmaMiEWkqNpHMEQCIC8DUdkrD3NHukizyXGOtwucHIoPj0QtKUt5BMRqHJtZAiBxo2KaGG4T5HZSLyXGIXaFMyb73J4P/tlCXjdHSAKaPwEBBCIAIF/NzjxitHdVO43JV6k1rdqDBcvUekCPB9LLhn1YgnnrAQX9AQJbIQNFZ3IwHiIQJiadMJWrXLYj/COYNbWDrkYy+ZoVEH7ydSEC1nwmzyAVP+diXKFFQiLTs661OxItig99MqPdSywgFvQhAl98/akzUW/VkMWjStSmjjFDtvQVWmSzqrLFX7hRFQ9hIQIoFVux3c0Rx/FKJ1JWUXgCOqlj+E6mtqBSvd661v6YZiEDdQBEHPtEhNo3cHNFlRGCOzRPHvDUa6we/Ux8RmdG9mYhAu8Neb/bmasL5nSx1dBsJN69dL/9wo1GZjPWZozCgczPIQMXlB5CGVSGgvuNjhcvCozk2DziEnJDXIXVmFWMjgYLfyECZgZbJ/fj061FtHGxzU4C3nP8RzfcJnmRWkXik8Wtz4QhAjghzD2nvp6M3OuPFG6d3XipUZh17MW0L+ZFr2kFRLzPIQIp/yshBrdsJ8OT6C1xwg7sMrzx8M8amsqKI3Jppn/z5SECTREzgcwJ3rim2mLgRwZE0aBt6CvicltQUmaMiEWkqNohA98kYqWi9oGjiW9hlkplVm/3dEi+mlWm2hhQb9nGwFHBIQK6+6MJb1RsxYMc4eSbpxQkeKZZ8taJu8cO03I1JVFyqCECh7y9T101f4moaXmzhkAkRdfppdzP0WFG0dKrDcLDKughAgU4Wddqo3XW80OmDjZ46QbACAFeMv5HErH9KyZHO91zX64AAQEg4HuaOwAAAAAXqRS7Y4CWBIuF4dV0NXPhz0pFk819LociAgJNETOBzAneuKbaYuBHBkTRoG3oK+JyW1BSZoyIRaSo2kcwRAIgV+eeyvYCjjcAdseQ0zDHm1lkUKA4wrx0fdjH7xHnOAoCICNjrhWahDu3DOo3FXG0gHJIAPrq41Mvwym3Nj25Lw32AQEEIgAgX83OPGK0d1U7jclXqTWt2oMFy9R6QI8H0suGfViCeesBBf0BAlshA0VncjAeIhAmJp0wlatctiP8I5g1tYOuRjL5mhUQfvJ1IQLWfCbPIBU/52JcoUVCItOzrrU7Ei2KD30yo91LLCAW9CECX3z9qTNRb9WQxaNK1KaOMUO29BVaZLOqssVfuFEVD2EhAigVW7HdzRHH8UonUlZReAI6qWP4Tqa2oFK93rrW/phmIQN1AEQc+0SE2jdwc0WVEYI7NE8e8NRrrB79THxGZ0b2ZiEC7w15v9uZqwvmdLHV0Gwk3r10v/3CjUZmM9ZmjMKBzM8hAxeUHkIZVIaC+42OFy8KjOTYPOISckNchdWYVYyOBgt/IQJmBlsn9+PTrUW0cbHNTgLec/xHN9wmeZFaReKTxa3PhCECOCHMPae+nozc648Ubp3deKlRmHXsxbQv5kWvaQVEvM8hAin/KyEGt2wnw5PoLXHCDuwyvPHwzxqayoojcmmmf/PlIQJNETOBzAneuKbaYuBHBkTRoG3oK+JyW1BSZoyIRaSo2iED3yRipaL2gaOJb2GWSmVWb/d0SL6aVabaGFBv2cbAUcEhArr7owlvVGzFgxzh5JunFCR4plny1om7xw7TcjUlUXKoIQKHvL1PXTV/iahpebOGQCRF1+ml3M/RYUbR0qsNwsMq6CECBThZ12qjddbzQ6YONnjpBsAIAV4y/kcSsf0rJkc73XNfrgABASDgFs0dAAAAABepFLtjgJYEi4Xh1XQ1c+HPSkWTzX0uhyICAk0RM4HMCd64ptpi4EcGRNGgbegr4nJbUFJmjIhFpKjaRzBEAiA3oaamKcYhOn7QLg3QLtansWEtI1CzxgyRSVExSbWhywIgZxa62yJMBBNrRULiVum50OzShbEh4mLJfD/2VNg5FmsBAQQiACBfzc48YrR3VTuNyVepNa3agwXL1HpAjwfSy4Z9WIJ56wEF/QECWyEDRWdyMB4iECYmnTCVq1y2I/wjmDW1g65GMvmaFRB+8nUhAtZ8Js8gFT/nYlyhRUIi07OutTsSLYoPfTKj3UssIBb0IQJffP2pM1Fv1ZDFo0rUpo4xQ7b0FVpks6qyxV+4URUPYSECKBVbsd3NEcfxSidSVlF4AjqpY/hOpragUr3eutb+mGYhA3UARBz7RITaN3BzRZURgjs0Tx7w1GusHv1MfEZnRvZmIQLvDXm/25mrC+Z0sdXQbCTevXS//cKNRmYz1maMwoHMzyEDF5QeQhlUhoL7jY4XLwqM5Ng84hJyQ1yF1ZhVjI4GC38hAmYGWyf349OtRbRxsc1OAt5z/Ec33CZ5kVpF4pPFrc+EIQI4Icw9p76ejNzrjxRund14qVGYdezFtC/mRa9pBUS8zyECKf8rIQa3bCfDk+gtccIO7DK88fDPGprKiiNyaaZ/8+UhAk0RM4HMCd64ptpi4EcGRNGgbegr4nJbUFJmjIhFpKjaIQPfJGKlovaBo4lvYZZKZVZv93RIvppVptoYUG/ZxsBRwSECuvujCW9UbMWDHOHkm6cUJHimWfLWibvHDtNyNSVRcqghAoe8vU9dNX+JqGl5s4ZAJEXX6aXcz9FhRtHSqw3CwyroIQIFOFnXaqN11vNDpg42eOkGwAgBXjL+RxKx/SsmRzvdc1+uAAEBIOAWzR0AAAAAF6kUu2OAlgSLheHVdDVz4c9KRZPNfS6HIgICTREzgcwJ3rim2mLgRwZE0aBt6CvicltQUmaMiEWkqNpHMEQCIEePGrVkit5k46XaCoGur20VxDjV1fslcr3uZEL+KICbAiAuIhsai8LvudD3ZebtJzaQ8LUCefb1o7hGojtxRjVTAAEBBCIAIF/NzjxitHdVO43JV6k1rdqDBcvUekCPB9LLhn1YgnnrAQX9AQJbIQNFZ3IwHiIQJiadMJWrXLYj/COYNbWDrkYy+ZoVEH7ydSEC1nwmzyAVP+diXKFFQiLTs661OxItig99MqPdSywgFvQhAl98/akzUW/VkMWjStSmjjFDtvQVWmSzqrLFX7hRFQ9hIQIoFVux3c0Rx/FKJ1JWUXgCOqlj+E6mtqBSvd661v6YZiEDdQBEHPtEhNo3cHNFlRGCOzRPHvDUa6we/Ux8RmdG9mYhAu8Neb/bmasL5nSx1dBsJN69dL/9wo1GZjPWZozCgczPIQMXlB5CGVSGgvuNjhcvCozk2DziEnJDXIXVmFWMjgYLfyECZgZbJ/fj061FtHGxzU4C3nP8RzfcJnmRWkXik8Wtz4QhAjghzD2nvp6M3OuPFG6d3XipUZh17MW0L+ZFr2kFRLzPIQIp/yshBrdsJ8OT6C1xwg7sMrzx8M8amsqKI3Jppn/z5SECTREzgcwJ3rim2mLgRwZE0aBt6CvicltQUmaMiEWkqNohA98kYqWi9oGjiW9hlkplVm/3dEi+mlWm2hhQb9nGwFHBIQK6+6MJb1RsxYMc4eSbpxQkeKZZ8taJu8cO03I1JVFyqCECh7y9T101f4moaXmzhkAkRdfppdzP0WFG0dKrDcLDKughAgU4Wddqo3XW80OmDjZ46QbACAFeMv5HErH9KyZHO91zX64AAQEg4FyQQQAAAAAXqRS7Y4CWBIuF4dV0NXPhz0pFk819LociAgJNETOBzAneuKbaYuBHBkTRoG3oK+JyW1BSZoyIRaSo2kcwRAIgLWbRuq/09eo1PR+seyGFOMoFQINW5pCSI8lndsuT/BYCIAFOmlPJsimuxkGs/FslaUWOgMpKW9FdW1i8G2Ur3RT1AQEEIgAgX83OPGK0d1U7jclXqTWt2oMFy9R6QI8H0suGfViCeesBBf0BAlshA0VncjAeIhAmJp0wlatctiP8I5g1tYOuRjL5mhUQfvJ1IQLWfCbPIBU/52JcoUVCItOzrrU7Ei2KD30yo91LLCAW9CECX3z9qTNRb9WQxaNK1KaOMUO29BVaZLOqssVfuFEVD2EhAigVW7HdzRHH8UonUlZReAI6qWP4Tqa2oFK93rrW/phmIQN1AEQc+0SE2jdwc0WVEYI7NE8e8NRrrB79THxGZ0b2ZiEC7w15v9uZqwvmdLHV0Gwk3r10v/3CjUZmM9ZmjMKBzM8hAxeUHkIZVIaC+42OFy8KjOTYPOISckNchdWYVYyOBgt/IQJmBlsn9+PTrUW0cbHNTgLec/xHN9wmeZFaReKTxa3PhCECOCHMPae+nozc648Ubp3deKlRmHXsxbQv5kWvaQVEvM8hAin/KyEGt2wnw5PoLXHCDuwyvPHwzxqayoojcmmmf/PlIQJNETOBzAneuKbaYuBHBkTRoG3oK+JyW1BSZoyIRaSo2iED3yRipaL2gaOJb2GWSmVWb/d0SL6aVabaGFBv2cbAUcEhArr7owlvVGzFgxzh5JunFCR4plny1om7xw7TcjUlUXKoIQKHvL1PXTV/iahpebOGQCRF1+ml3M/RYUbR0qsNwsMq6CECBThZ12qjddbzQ6YONnjpBsAIAV4y/kcSsf0rJkc73XNfrgAA"
],[
"1.27.11",
"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"
],[
"1.27.12",
"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"
],[
"1.27.13",
"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"
],[
"1.27.14",
"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"
]
],
"sidechain_transaction": "",
"total_weight": 15,
"current_weight": 13,
"threshold": 11,
"valid": true,
"complete": true,
"sent": true
}
]

