UDC blockchain protection
The Universa blockchain underneath UDC platform effectively protects DC from counterfeit and fraud attempts. Let's see how it is done.
Whenever a new DC contract or a new revision of the existing contract is sent to the underlying Universa network for approval, Universa checks that:
- it is a new contract (has no parent), it is properly signed by the supervisory board.
- if it is a change in the exising DC contract, it should:
- have a valid parent state (approved by the network);
- have the amount unchanged, or changed correctly;
- be invoked by the account which is correct and not blocked.
So, once issued, the DC contract constructs a blockchain of its revisions and branches, for example:
(please note that actual transfer takes also the commission, which is not listed here).
On each step Universa checks the source DC contract, the operation in general, approves the new states, and revokes the old states in one atomic operation, using the network distributed check (all nodes participate and approve).
The UDC system checks every DC contract in the account to ensure it is approved by the network and is really a DC contract, which is rather simple by checking roles of the contract body which is highly optimized operation in fact. In other words, the system checks that the root contract of this blockchain was once created with supervisory board approval and the current state is approved by the Universa network.
This is, in fact, enough for all purposes. As in the diagram above, when the root contract is first registered (1), Universa checks its issuer role, e.g. that it is signed by the actual members of the supervisory board. “Actual” means that the current state of the supervisory board contract is used, requiring current members to sign DC being issued.
As for the step (2), Universa checks that the contract definition is unchanged (e.g. roles and references are not altered), and the state of the parent contract (in this case – the root contract). As it is approved, it means it has been proven that it was issued be the supervisory board as it was at the issuing time (the board may and will change after that).
The third step (3) is similar to (2), the only difference is that its parent state is not the root state, but it makes no difference: the previous state is approved and the definition is not changed, therefore the network approves that this new contract is a part of initial emission, rather than some counterfeit one.
Also, the Universa routinely checks that on each change the total amount keeps the same, e.g. sub of amounts of all approved DC children are always the same the root contract was issued with: this is also an integrated feature of Universa network blockchain.
Fraud protection explained
Suppose, some bad guy Chuck decides to issue counterfeit DC. In this case, he has few alternatives:
Counterfeit new DC
Chuck needs to sign his copy with the keys of current supervisory board members, or the Universa won't approve the contract. And if he alters the issuer role to sign it with other contracts, UDC system just won’t recognize it, and Uninversa will block any attempt to join it with valid DC contracts, because the issuer role is different.
Creating fake block in the chain
Chuck also is unable to issue the fake DC contract referring the invalid (for example, already revoked, or even never approved) parent contract, as the Universa nodes will not approve a contract referring a wrong parent.
Chuck might try to “spend” several different copies of a valid DC contract (effectively executing a double-spending attack), but the protection against such type of the attack is integrated into Universa network core, see double spending protection for detailed explanation of the attack and protection.