Requirements
Issuer
Core
Accounting
The Accounts Engine is a high performance transactions
processor. It has to provide the following:
-
Register an identifier.
-
Mailbox facility that returns messages to owner.
-
Under each identifier, many subaccounts in named
items.
-
A subaccount includes a list that references transactions.
-
A transaction is an item/value/data tuple between two accounts.
-
Each transaction will optionally generate
signed receipts for the mailbox.
These requirements are expanded in
Requirements - Accounts.
Coin DB
-
Takes a string.
-
Attempts to store it.
-
Store succeeds if not present, otherwise fails.
-
Returns results - success or fail.
-
Once stored, the strings stay stored.
i.e., checkpoints and logs.
-
Should be as fast as network access.
-
Interface can handle batches of coins,
with all or nothing and return good and bad individually.
May be distributed. Look at caching algorithms!
Crypto Server
This should be a separate process, and must provide
an API. This architecture is imposed in order to add in hardware
and remote signing machines at a later time.
-
API delivers these services:
-
Return signature S on packet P with signing key K
(where K implies the signature algorithm used).
-
Return signature S on hash H.
(Might be same as above.)
-
Check signature S on packet P.
-
Authenticate signature S on hash H.
(Might be same as above.)
-
Encrypt number N with Public Key K1
-
Decrypt number N with Private Key K2
-
Generate random number (session key).
-
The API is idempotent for signature operations - that is a packet P that
is passed for signing twice should return the same S.
-
The server may cache packets and signatures for a
short period of time (e.g. hours).
-
The server may provide logging and diagnostics,
more as a debugging aid; there is no audit need.
Note that the remote server must be protected from unathorised
access. This is not the job of the server, but of
the whole system architecture and a higher layer protocol.
Does Kerberos provide a framework for this?
Note that the authentication API does not cover
symmetric ciphers as these are fast.
Identity DB
A general purpose identity database will be required for
conventional applications. This should provide user name,
address, etc details. It is likely to be an SQL engine of
some form.
It must be reliable...
Protocols
SOX2 should form the framework of the protocol.
It should provide
-
Confidentiality
-
Integrity
-
Authentication
-
Nonrepudiation by client (signature on transfer)
-
Carriage of (SOX) signed transfers
-
Protocol element for registration.
This step may include
-
Negotiation of session CIA.
-
Negotiation of paramaters.
-
Issuer time syncronisation.
-
Protocol element(s) for value movement.
-
Protocol element for collection of mail.
-
Carriage of other instruments such as tokens with bearer.
This implies that some or all of the protocol elements
include multiple dialogues - implying state. For example,
Coin withdrawal is a 3 part protocol.
Wallets
Storage
Wallets will need to provide or acquire a reliable
store for generated data elements
-
private keys,
-
receipts (for SOX),
-
tokens (for token systems).
An additional store for locally cached data is
required, being for contracts and public keys.
General
Wallets to include basic stream input and output
of value (for import and export into other wallets).
DB
SOX
Clients
E-Gold System
Issuers of E-Gold are
known as Reserve Institutions.
-
There are multiple Reserve Institutions.
-
E-gold can be atomically transferred
by users
between Reserve Institutions as well.
-
Reserve Institutions should be
legally distinct entities,
geographically and jurisdictionally
distributed.
-
Reserve Institutions must be auditable
by to ensure successful
execution of contractual obligations
to holders of E-Gold.
They all use EGT to settle their gold,
but this is an assumption, not a requirement.
Need to clarify.
Issuer
An Issuer must
be able to:
-
manage value based on Ricardian contracts.
A Ricardian contract is a contract that is identified
by the hash of a signed, formatted file that includes
all technical and business details of the contract.
-
A CMCF can take deposits? but is this the same as the
issuance of own debt?
-
A CMCF can make loans.
-
A CMCF can securitize the issue of small borrowers.
-
A CMCF must be able to create multiple currencies,
preferably on the fly.
-
Must be capable of publishing the complete
balance sheet for a currency.
CMCF should be able to securitize an asset from
a single party for the purpose of floating that
asset as certificates. E.g., the Berkshire-Hathaway
idea.
DigiGold
DigiGold certificates are
-
negotiable,
-
branded (as DigiGold),
-
fractionally reserved,
-
redeemable in e-gold,
-
redeemable according to contract,
-
suitable audited for redemption performance,
-
unit of account is oz-e-gold,
-
may be cleared through third party CMCFs,
-
meant to be used as a currency,
-
should not be defradable.
This means probably accounts are not
temperable by the CMCF
(tamper-resistant hardware or distributed).
What is a 100%-backed-by-e-gold certificate?
Transactions
DigiGold X
-
Provide non-repudiable receipts,
-
checkable by at least a TTP or the client,
-
atomic, and therefore idempotent and cancellable,
E-gold X
E-gold transactions are
-
push - in that the payer must initiate,
-
payer must authenticate,
-
transactions are not roll-backable,
-
and therefore, authentications must be strong.
-
available both to humans and programs
(web and API interfaces),
-
accounting supports transactions costs
and other statistical methods (e.g.
balance).
-
capable of being costless for designated
accounts and/or transactions.
-
Provide non-repudiable receipts,
-
checkable by at least a TTP or the client,
-
atomic, and therefore idempotent and cancellable,
Big question of solvency - how to measure and
enforce.
CMCF X
These are conventional accounting
systems for borrowers with tailored
loans, etc.
deposit of DigiGold and E-gold.
This is standard accounts.
The User
The user is;
The Purchasing Application
-
Only one class of user - Wallet must
include both selling and purchasing halves.
-
can receive a payment and store it
on safe storage in an automated
fashion (this is the merchant-wallet).
-
no identifying information (of either)
is required to make a DigiGold payment.
-
no particular requirement to allow the
identification of the payer, but obviously
a useful feature....
-
must be able to create a non-revocable
payment.
-
shielded from the distinction between
different contracts issued in the same
unit of account...
The DigiGold Wallet
Wallet requirements include
-
balance in any given unit of account,
-
consolidated asset value,
-
history of digigold transactions
may be provided,
-
There must be at least one
wallet choice that keeps history,
and one choice that does not,
(either options or distinct software),
-
Uses Ricardian contracts.
-
Open Software.
-
CMCF is only required to live up to
-
Wallet must take appropriate security
measures to ensure protection of
assets and records.
(Appropriate is implementor-dependant.)
-
Wallet may request authentication
of some form from client.
-
Wallet needs to provide stream output and
input for export and import of values.
The Client
Basic client includes:
-
balance in individual contracts.
-
shields the user from differences between
similarly-backed instruments where possible.
-
consolidated asset value in groups
of assets and combined assets.
-
history of digigold transactions
may be provided,
-
Must provide choice of history on or off.
(I.e., stores audit trail on or off.)
-
Should include:
- some authentication method.
-
Should be capable of handling multiple wallets.
-
Raw application included in all clients is
export and import of value in ascii data message.
Need to consider how to do multiple
wallets standards.
Auditing
The issuance of DigiGold implies a level of auditing
by (any) external parties.
-
Size of Reserves held at E-Gold.
-
Quantity of issued certificates against those
reserves.
-
Redemption
Primary and Secondary market - distinction.
Is there a redemption method? Is there a
separate protocol to redeem in e-gold?
-
There must be a separate method of
DigiGold-to-E-Gold redemption.
-
Random
Protocols
| Client Wallet
| Server Wallet
| Issuer Core
| Management
|
SOX
| DB
| Purchase
| Trade
|