Identity protocol v1: Difference between revisions
Jump to navigation
Jump to search
→Creating root record: simplify (h/t petertodd) |
|||
Line 27: | Line 27: | ||
Craft a bytestream that represents the root SIN record. | Craft a bytestream that represents the root SIN record. | ||
# MPK = master public key | |||
# B1 = block w/ T1, B2 = block w/ T2 | # B1 = block w/ T1, B2 = block w/ T2 | ||
# Verify B2 | # Verify B2 height >= 144 blocks of B1 height. Fail and waste sacrifice if not. | ||
# MD = ripemd160( | # MD = ripemd160(MPK) | ||
# Prefix = 0x18, SIN_Version = 0x01 | # Prefix = 0x18, SIN_Version = 0x01 | ||
# SIN = base58_encode_check( Prefix + SIN_Version + MD ) | # SIN = base58_encode_check( Prefix + SIN_Version + MD ) | ||
# PPK = Preferred Public Key, new public key for root of trust | # PPK = Preferred Public Key, new public key for root of trust | ||
# Build root record, | # Build root record, | ||
## | ## SIN | ||
## | ## MPK | ||
Thus a minimal root record is | Thus a minimal root record is | ||
* SIN | * SIN | ||
* | * MPK | ||
and is provably | and is provably | ||
* linked to the sacrifices | * linked to the sacrifices | ||
* | * MPK starts a new chain of digital signature trust, for further record updates | ||
After that, additional key-value pairs may be associated with the root record via updates verified by PPK, stored in an alt-blockchain or DHT somewhere. That is outside the scope of this minimal document. | After that, additional key-value pairs may be associated with the root record via updates verified by PPK, stored in an alt-blockchain or DHT somewhere. That is outside the scope of this minimal document. |
Revision as of 04:25, 28 June 2013
Design goals
Decentralized identity.
- Has some creation cost
- Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data
- Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = "John Smith").
Creating sacrifice transactions
Similar to Announce/Commit Sacrifices
- TM = current block height
- create transaction T2.
- must include OP_RETURN <digest of master pubkey> output
- nlocktime = TM + 144 blocks
- no more than 1000 bytes in size
- create transaction T1
- must include >= 0.01 BTC fee
- must include OP_RETURN txid(T2) output
- no more than 1000 bytes in size
- broadcast T1, T2 until confirmed
Creating root record
Craft a bytestream that represents the root SIN record.
- MPK = master public key
- B1 = block w/ T1, B2 = block w/ T2
- Verify B2 height >= 144 blocks of B1 height. Fail and waste sacrifice if not.
- MD = ripemd160(MPK)
- Prefix = 0x18, SIN_Version = 0x01
- SIN = base58_encode_check( Prefix + SIN_Version + MD )
- PPK = Preferred Public Key, new public key for root of trust
- Build root record,
- SIN
- MPK
Thus a minimal root record is
- SIN
- MPK
and is provably
- linked to the sacrifices
- MPK starts a new chain of digital signature trust, for further record updates
After that, additional key-value pairs may be associated with the root record via updates verified by PPK, stored in an alt-blockchain or DHT somewhere. That is outside the scope of this minimal document.