<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://en.bitcoin.it/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jgarzik</id>
	<title>Bitcoin Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://en.bitcoin.it/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jgarzik"/>
	<link rel="alternate" type="text/html" href="https://en.bitcoin.it/wiki/Special:Contributions/Jgarzik"/>
	<updated>2026-05-14T00:12:03Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=56424</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=56424"/>
		<updated>2015-05-14T04:50:27Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* Implementations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Fully decentralized, anonymous, secure identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;Secure Identity Number&amp;quot; or &amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Ownership may be digitally proven&lt;br /&gt;
* Attach sequence of key-value pairs (public proof) and hashes (private proof) to your SIN record.&lt;br /&gt;
** A merkle root exists in each record, for even more private proofs.&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Disposable&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
* Third parties may offer digital attestions:&lt;br /&gt;
** Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
** Big Auction Provider, Inc. digitally signs a SIN as having a certain reputation score, on their website.&lt;br /&gt;
** Decentralized market users digitally sign one another&#039;s SINs, building a decentralized reputation&lt;br /&gt;
* Type-1 SINs:  have some creation cost, deterring spam.&lt;br /&gt;
* Type-1 SINs: Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
&lt;br /&gt;
tl;dr: A “master public key” generated by the user forms the root of digital trust.&lt;br /&gt;
&lt;br /&gt;
==Types of SINs==&lt;br /&gt;
&lt;br /&gt;
===Type 1 (persistent)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x01 (bitcoin main chain) or 0x11 (testnet)&lt;br /&gt;
&lt;br /&gt;
Type-1 SINs are intentionally scarce resources, much like bitcoins themselves.  All Type-1 SINs must conform to the sacrifice protocol described in this specification, to be considered valid.&lt;br /&gt;
&lt;br /&gt;
===Type 2 (ephemeral)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x02&lt;br /&gt;
&lt;br /&gt;
Type-2 SINs may be generated at any time, without network activity, much like bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
* MPK: Master Public Key.  ECDSA, using same curve as bitcoin (secp256k1).&lt;br /&gt;
* Hash160: ripemd160(sha256(data))&lt;br /&gt;
* base58_encode_check: see bitcoin source code, https://github.com/bitcoin/bitcoin/blob/master/src/base58.h&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x0F&lt;br /&gt;
# SIN_Type = [0x01 | 0x02 | 0x11] -- See above for discussion of SIN types.&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading if desired, inserting one hyphen after every 5th character.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For example, using the compressed public key:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
02F840A04114081690223B7069071A70D6DABB891763B638CC20C7EC3BD58E6C86&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 1 (SHA-256 of public key):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: cb05d0fd5e76ba8ea88323fc5d3eefd09a78d8e2a5fd4955307b549657a31330&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 2 (RIPEMD-160 of Step 1):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: cb1f4a4d793731842732c153b8e9923bdb462553&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3 (Prefix + SIN_Version + Step 2):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: 0F02cb1f4a4d793731842732c153b8e9923bdb462553&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 4 (Double SHA-256 of Step 3):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: 1a4214cdd79f55883263be8118d571c112cd4dbc9f8542d30daebd1231b522e9&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 5 (Checksum):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: 1a4214cd&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 6 (Step 5 + Step 3):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: 0F02cb1f4a4d793731842732c153b8e9923bdb4625531a4214cd&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SIN (Base58 encoded):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: TfG4ScDgysrSpodWD4Re5UtXmcLbY5CiUHA&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master ECDSA public key (compressed)&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==SIN record==&lt;br /&gt;
&lt;br /&gt;
A SIN record is a series of hashes or key/value pairs, validated by MPK digital signature.  Each SIN record has a stable binary encoding designed to ensure stable hash values.  This scheme is intentionally mirroring bitcoin&#039;s block header/merkle scheme.&lt;br /&gt;
&lt;br /&gt;
Data types:&lt;br /&gt;
* uint32_t: an unsigned, little endian integer&lt;br /&gt;
* uint256_t: bitcoin-like 256-bit hash value&lt;br /&gt;
&lt;br /&gt;
Layout of a SIN record:&lt;br /&gt;
* uint32_t magic number (and/or version number) == 0x88, 0x41, 0x92, 0xA4&lt;br /&gt;
* uint256_t merkle root&lt;br /&gt;
* uint32_t data record count&lt;br /&gt;
* [list of data records]&lt;br /&gt;
* Signature&lt;br /&gt;
&lt;br /&gt;
Layout of a data record:&lt;br /&gt;
* uint32_t: record type (== 0x1 for hash, 0x2 for key/value pair)&lt;br /&gt;
* [data record-specific data]&lt;br /&gt;
&lt;br /&gt;
Layout of a hash data record:&lt;br /&gt;
* [32 bytes of hash data]&lt;br /&gt;
&lt;br /&gt;
Layout of a key/value data record:&lt;br /&gt;
* uint32_t key length&lt;br /&gt;
* uint32_t value length&lt;br /&gt;
* [key-length UTF8-encoded key]&lt;br /&gt;
* [value-length opaque data]&lt;br /&gt;
&lt;br /&gt;
Duplicate keys are not permitted.&lt;br /&gt;
&lt;br /&gt;
==Implementations==&lt;br /&gt;
&lt;br /&gt;
See:&lt;br /&gt;
* https://github.com/bitpay/bitauth/blob/master/lib/bitauth.js&lt;br /&gt;
* https://github.com/gasteve/node-libcoin/blob/master/SIN.js&lt;br /&gt;
* https://github.com/gasteve/node-libcoin/blob/master/SINKey.js&lt;br /&gt;
* https://github.com/ionux/phactor/blob/master/src/Sin.php&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=51116</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=51116"/>
		<updated>2014-09-14T19:31:49Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* Creating a SIN */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Fully decentralized, anonymous, secure identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;Secure Identity Number&amp;quot; or &amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Ownership may be digitally proven&lt;br /&gt;
* Attach sequence of key-value pairs (public proof) and hashes (private proof) to your SIN record.&lt;br /&gt;
** A merkle root exists in each record, for even more private proofs.&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Disposable&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
* Third parties may offer digital attestions:&lt;br /&gt;
** Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
** Big Auction Provider, Inc. digitally signs a SIN as having a certain reputation score, on their website.&lt;br /&gt;
** Decentralized market users digitally sign one another&#039;s SINs, building a decentralized reputation&lt;br /&gt;
* Type-1 SINs:  have some creation cost, deterring spam.&lt;br /&gt;
* Type-1 SINs: Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
&lt;br /&gt;
tl;dr: A “master public key” generated by the user forms the root of digital trust.&lt;br /&gt;
&lt;br /&gt;
==Types of SINs==&lt;br /&gt;
&lt;br /&gt;
===Type 1 (persistent)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x01 (bitcoin main chain) or 0x11 (testnet)&lt;br /&gt;
&lt;br /&gt;
Type-1 SINs are intentionally scarce resources, much like bitcoins themselves.  All Type-1 SINs must conform to the sacrifice protocol described in this specification, to be considered valid.&lt;br /&gt;
&lt;br /&gt;
===Type 2 (ephemeral)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x02&lt;br /&gt;
&lt;br /&gt;
Type-2 SINs may be generated at any time, without network activity, much like bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
* MPK: Master Public Key.  ECDSA, using same curve as bitcoin (secp256k1).&lt;br /&gt;
* Hash160: ripemd160(sha256(data))&lt;br /&gt;
* base58_encode_check: see bitcoin source code, https://github.com/bitcoin/bitcoin/blob/master/src/base58.h&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x0F&lt;br /&gt;
# SIN_Type = [0x01 | 0x02 | 0x11] -- See above for discussion of SIN types.&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading if desired, inserting one hyphen after every 5th character.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For example, using the compressed public key:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
02F840A04114081690223B7069071A70D6DABB891763B638CC20C7EC3BD58E6C86&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 1 (SHA-256 of public key):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: cb05d0fd5e76ba8ea88323fc5d3eefd09a78d8e2a5fd4955307b549657a31330&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 2 (RIPEMD-160 of Step 1):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: cb1f4a4d793731842732c153b8e9923bdb462553&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3 (Prefix + SIN_Version + Step 2):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: 0F02cb1f4a4d793731842732c153b8e9923bdb462553&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 4 (Double SHA-256 of Step 3):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: 1a4214cdd79f55883263be8118d571c112cd4dbc9f8542d30daebd1231b522e9&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 5 (Checksum):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: 1a4214cd&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 6 (Step 5 + Step 3):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: 0F02cb1f4a4d793731842732c153b8e9923bdb4625531a4214cd&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SIN (Base58 encoded):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: TfG4ScDgysrSpodWD4Re5UtXmcLbY5CiUHA&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master ECDSA public key (compressed)&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==SIN record==&lt;br /&gt;
&lt;br /&gt;
A SIN record is a series of hashes or key/value pairs, validated by MPK digital signature.  Each SIN record has a stable binary encoding designed to ensure stable hash values.  This scheme is intentionally mirroring bitcoin&#039;s block header/merkle scheme.&lt;br /&gt;
&lt;br /&gt;
Data types:&lt;br /&gt;
* uint32_t: an unsigned, little endian integer&lt;br /&gt;
* uint256_t: bitcoin-like 256-bit hash value&lt;br /&gt;
&lt;br /&gt;
Layout of a SIN record:&lt;br /&gt;
* uint32_t magic number (and/or version number) == 0x88, 0x41, 0x92, 0xA4&lt;br /&gt;
* uint256_t merkle root&lt;br /&gt;
* uint32_t data record count&lt;br /&gt;
* [list of data records]&lt;br /&gt;
* Signature&lt;br /&gt;
&lt;br /&gt;
Layout of a data record:&lt;br /&gt;
* uint32_t: record type (== 0x1 for hash, 0x2 for key/value pair)&lt;br /&gt;
* [data record-specific data]&lt;br /&gt;
&lt;br /&gt;
Layout of a hash data record:&lt;br /&gt;
* [32 bytes of hash data]&lt;br /&gt;
&lt;br /&gt;
Layout of a key/value data record:&lt;br /&gt;
* uint32_t key length&lt;br /&gt;
* uint32_t value length&lt;br /&gt;
* [key-length UTF8-encoded key]&lt;br /&gt;
* [value-length opaque data]&lt;br /&gt;
&lt;br /&gt;
Duplicate keys are not permitted.&lt;br /&gt;
&lt;br /&gt;
==Implementations==&lt;br /&gt;
&lt;br /&gt;
See&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SIN.js&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SINKey.js&lt;br /&gt;
https://github.com/ionux/php-ectools/blob/master/ecsingen.php&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=51115</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=51115"/>
		<updated>2014-09-14T19:12:46Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* Design goals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Fully decentralized, anonymous, secure identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;Secure Identity Number&amp;quot; or &amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Ownership may be digitally proven&lt;br /&gt;
* Attach sequence of key-value pairs (public proof) and hashes (private proof) to your SIN record.&lt;br /&gt;
** A merkle root exists in each record, for even more private proofs.&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Disposable&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
* Third parties may offer digital attestions:&lt;br /&gt;
** Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
** Big Auction Provider, Inc. digitally signs a SIN as having a certain reputation score, on their website.&lt;br /&gt;
** Decentralized market users digitally sign one another&#039;s SINs, building a decentralized reputation&lt;br /&gt;
* Type-1 SINs:  have some creation cost, deterring spam.&lt;br /&gt;
* Type-1 SINs: Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
&lt;br /&gt;
tl;dr: A “master public key” generated by the user forms the root of digital trust.&lt;br /&gt;
&lt;br /&gt;
==Types of SINs==&lt;br /&gt;
&lt;br /&gt;
===Type 1 (persistent)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x01 (bitcoin main chain) or 0x11 (testnet)&lt;br /&gt;
&lt;br /&gt;
Type-1 SINs are intentionally scarce resources, much like bitcoins themselves.  All Type-1 SINs must conform to the sacrifice protocol described in this specification, to be considered valid.&lt;br /&gt;
&lt;br /&gt;
===Type 2 (ephemeral)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x02&lt;br /&gt;
&lt;br /&gt;
Type-2 SINs may be generated at any time, without network activity, much like bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
* MPK: Master Public Key.  ECDSA, using same curve as bitcoin (secp256k1).&lt;br /&gt;
* Hash160: ripemd160(sha256(data))&lt;br /&gt;
* base58_encode_check: see bitcoin source code, https://github.com/bitcoin/bitcoin/blob/master/src/base58.h&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x0F&lt;br /&gt;
# SIN_Type = [0x01 | 0x02 | 0x11] -- See below for discussion of SIN types.&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading if desired, inserting one hyphen after every 5th character.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For example, using the compressed public key:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
02F840A04114081690223B7069071A70D6DABB891763B638CC20C7EC3BD58E6C86&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 1 (SHA-256 of public key):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: cb05d0fd5e76ba8ea88323fc5d3eefd09a78d8e2a5fd4955307b549657a31330&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 2 (RIPEMD-160 of Step 1):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: cb1f4a4d793731842732c153b8e9923bdb462553&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3 (Prefix + SIN_Version + Step 2):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: 0F02cb1f4a4d793731842732c153b8e9923bdb462553&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 4 (Double SHA-256 of Step 3):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: 1a4214cdd79f55883263be8118d571c112cd4dbc9f8542d30daebd1231b522e9&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 5 (Checksum):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: 1a4214cd&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 6 (Step 5 + Step 3):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: 0F02cb1f4a4d793731842732c153b8e9923bdb4625531a4214cd&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SIN (Base58 encoded):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: TfG4ScDgysrSpodWD4Re5UtXmcLbY5CiUHA&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master ECDSA public key (compressed)&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==SIN record==&lt;br /&gt;
&lt;br /&gt;
A SIN record is a series of hashes or key/value pairs, validated by MPK digital signature.  Each SIN record has a stable binary encoding designed to ensure stable hash values.  This scheme is intentionally mirroring bitcoin&#039;s block header/merkle scheme.&lt;br /&gt;
&lt;br /&gt;
Data types:&lt;br /&gt;
* uint32_t: an unsigned, little endian integer&lt;br /&gt;
* uint256_t: bitcoin-like 256-bit hash value&lt;br /&gt;
&lt;br /&gt;
Layout of a SIN record:&lt;br /&gt;
* uint32_t magic number (and/or version number) == 0x88, 0x41, 0x92, 0xA4&lt;br /&gt;
* uint256_t merkle root&lt;br /&gt;
* uint32_t data record count&lt;br /&gt;
* [list of data records]&lt;br /&gt;
* Signature&lt;br /&gt;
&lt;br /&gt;
Layout of a data record:&lt;br /&gt;
* uint32_t: record type (== 0x1 for hash, 0x2 for key/value pair)&lt;br /&gt;
* [data record-specific data]&lt;br /&gt;
&lt;br /&gt;
Layout of a hash data record:&lt;br /&gt;
* [32 bytes of hash data]&lt;br /&gt;
&lt;br /&gt;
Layout of a key/value data record:&lt;br /&gt;
* uint32_t key length&lt;br /&gt;
* uint32_t value length&lt;br /&gt;
* [key-length UTF8-encoded key]&lt;br /&gt;
* [value-length opaque data]&lt;br /&gt;
&lt;br /&gt;
Duplicate keys are not permitted.&lt;br /&gt;
&lt;br /&gt;
==Implementations==&lt;br /&gt;
&lt;br /&gt;
See&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SIN.js&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SINKey.js&lt;br /&gt;
https://github.com/ionux/php-ectools/blob/master/ecsingen.php&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=51114</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=51114"/>
		<updated>2014-09-14T19:11:19Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* Design goals */ merkle mention&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Fully decentralized, anonymous, secure identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;Secure Identity Number&amp;quot; or &amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Ownership may be digitally proven&lt;br /&gt;
* Attach sequence of key-value pairs (public proof) and hashes (private proof) to your SIN record.&lt;br /&gt;
** One or more of theese hashes may be the root of a merkle tree, enabling even more private proofs.&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Disposable&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
* Third parties may offer digital attestions:&lt;br /&gt;
** Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
** Big Auction Provider, Inc. digitally signs a SIN as having a certain reputation score, on their website.&lt;br /&gt;
** Decentralized market users digitally sign one another&#039;s SINs, building a decentralized reputation&lt;br /&gt;
* Type-1 SINs:  have some creation cost, deterring spam.&lt;br /&gt;
* Type-1 SINs: Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
&lt;br /&gt;
tl;dr: A “master public key” generated by the user forms the root of digital trust.&lt;br /&gt;
&lt;br /&gt;
==Types of SINs==&lt;br /&gt;
&lt;br /&gt;
===Type 1 (persistent)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x01 (bitcoin main chain) or 0x11 (testnet)&lt;br /&gt;
&lt;br /&gt;
Type-1 SINs are intentionally scarce resources, much like bitcoins themselves.  All Type-1 SINs must conform to the sacrifice protocol described in this specification, to be considered valid.&lt;br /&gt;
&lt;br /&gt;
===Type 2 (ephemeral)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x02&lt;br /&gt;
&lt;br /&gt;
Type-2 SINs may be generated at any time, without network activity, much like bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
* MPK: Master Public Key.  ECDSA, using same curve as bitcoin (secp256k1).&lt;br /&gt;
* Hash160: ripemd160(sha256(data))&lt;br /&gt;
* base58_encode_check: see bitcoin source code, https://github.com/bitcoin/bitcoin/blob/master/src/base58.h&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x0F&lt;br /&gt;
# SIN_Type = [0x01 | 0x02 | 0x11] -- See below for discussion of SIN types.&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading if desired, inserting one hyphen after every 5th character.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For example, using the compressed public key:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
02F840A04114081690223B7069071A70D6DABB891763B638CC20C7EC3BD58E6C86&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 1 (SHA-256 of public key):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: cb05d0fd5e76ba8ea88323fc5d3eefd09a78d8e2a5fd4955307b549657a31330&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 2 (RIPEMD-160 of Step 1):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: cb1f4a4d793731842732c153b8e9923bdb462553&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3 (Prefix + SIN_Version + Step 2):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: 0F02cb1f4a4d793731842732c153b8e9923bdb462553&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 4 (Double SHA-256 of Step 3):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: 1a4214cdd79f55883263be8118d571c112cd4dbc9f8542d30daebd1231b522e9&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 5 (Checksum):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: 1a4214cd&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 6 (Step 5 + Step 3):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: 0F02cb1f4a4d793731842732c153b8e9923bdb4625531a4214cd&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SIN (Base58 encoded):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: TfG4ScDgysrSpodWD4Re5UtXmcLbY5CiUHA&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master ECDSA public key (compressed)&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==SIN record==&lt;br /&gt;
&lt;br /&gt;
A SIN record is a series of hashes or key/value pairs, validated by MPK digital signature.  Each SIN record has a stable binary encoding designed to ensure stable hash values.  This scheme is intentionally mirroring bitcoin&#039;s block header/merkle scheme.&lt;br /&gt;
&lt;br /&gt;
Data types:&lt;br /&gt;
* uint32_t: an unsigned, little endian integer&lt;br /&gt;
* uint256_t: bitcoin-like 256-bit hash value&lt;br /&gt;
&lt;br /&gt;
Layout of a SIN record:&lt;br /&gt;
* uint32_t magic number (and/or version number) == 0x88, 0x41, 0x92, 0xA4&lt;br /&gt;
* uint256_t merkle root&lt;br /&gt;
* uint32_t data record count&lt;br /&gt;
* [list of data records]&lt;br /&gt;
* Signature&lt;br /&gt;
&lt;br /&gt;
Layout of a data record:&lt;br /&gt;
* uint32_t: record type (== 0x1 for hash, 0x2 for key/value pair)&lt;br /&gt;
* [data record-specific data]&lt;br /&gt;
&lt;br /&gt;
Layout of a hash data record:&lt;br /&gt;
* [32 bytes of hash data]&lt;br /&gt;
&lt;br /&gt;
Layout of a key/value data record:&lt;br /&gt;
* uint32_t key length&lt;br /&gt;
* uint32_t value length&lt;br /&gt;
* [key-length UTF8-encoded key]&lt;br /&gt;
* [value-length opaque data]&lt;br /&gt;
&lt;br /&gt;
Duplicate keys are not permitted.&lt;br /&gt;
&lt;br /&gt;
==Implementations==&lt;br /&gt;
&lt;br /&gt;
See&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SIN.js&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SINKey.js&lt;br /&gt;
https://github.com/ionux/php-ectools/blob/master/ecsingen.php&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=51113</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=51113"/>
		<updated>2014-09-14T19:09:56Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* Design goals */ Secure Identity Number&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Fully decentralized, anonymous, secure identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;Secure Identity Number&amp;quot; or &amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Ownership may be digitally proven&lt;br /&gt;
* Attach sequence of key-value pairs (public proof) and hashes (private proof) to your SIN record.&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Disposable&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
* Third parties may offer digital attestions:&lt;br /&gt;
** Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
** Big Auction Provider, Inc. digitally signs a SIN as having a certain reputation score, on their website.&lt;br /&gt;
** Decentralized market users digitally sign one another&#039;s SINs, building a decentralized reputation&lt;br /&gt;
* Type-1 SINs:  have some creation cost, deterring spam.&lt;br /&gt;
* Type-1 SINs: Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
&lt;br /&gt;
tl;dr: A “master public key” generated by the user forms the root of digital trust.&lt;br /&gt;
&lt;br /&gt;
==Types of SINs==&lt;br /&gt;
&lt;br /&gt;
===Type 1 (persistent)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x01 (bitcoin main chain) or 0x11 (testnet)&lt;br /&gt;
&lt;br /&gt;
Type-1 SINs are intentionally scarce resources, much like bitcoins themselves.  All Type-1 SINs must conform to the sacrifice protocol described in this specification, to be considered valid.&lt;br /&gt;
&lt;br /&gt;
===Type 2 (ephemeral)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x02&lt;br /&gt;
&lt;br /&gt;
Type-2 SINs may be generated at any time, without network activity, much like bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
* MPK: Master Public Key.  ECDSA, using same curve as bitcoin (secp256k1).&lt;br /&gt;
* Hash160: ripemd160(sha256(data))&lt;br /&gt;
* base58_encode_check: see bitcoin source code, https://github.com/bitcoin/bitcoin/blob/master/src/base58.h&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x0F&lt;br /&gt;
# SIN_Type = [0x01 | 0x02 | 0x11] -- See below for discussion of SIN types.&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading if desired, inserting one hyphen after every 5th character.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For example, using the compressed public key:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
02F840A04114081690223B7069071A70D6DABB891763B638CC20C7EC3BD58E6C86&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 1 (SHA-256 of public key):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: cb05d0fd5e76ba8ea88323fc5d3eefd09a78d8e2a5fd4955307b549657a31330&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 2 (RIPEMD-160 of Step 1):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: cb1f4a4d793731842732c153b8e9923bdb462553&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3 (Prefix + SIN_Version + Step 2):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: 0F02cb1f4a4d793731842732c153b8e9923bdb462553&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 4 (Double SHA-256 of Step 3):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: 1a4214cdd79f55883263be8118d571c112cd4dbc9f8542d30daebd1231b522e9&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 5 (Checksum):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: 1a4214cd&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 6 (Step 5 + Step 3):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: 0F02cb1f4a4d793731842732c153b8e9923bdb4625531a4214cd&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SIN (Base58 encoded):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: TfG4ScDgysrSpodWD4Re5UtXmcLbY5CiUHA&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master ECDSA public key (compressed)&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==SIN record==&lt;br /&gt;
&lt;br /&gt;
A SIN record is a series of hashes or key/value pairs, validated by MPK digital signature.  Each SIN record has a stable binary encoding designed to ensure stable hash values.  This scheme is intentionally mirroring bitcoin&#039;s block header/merkle scheme.&lt;br /&gt;
&lt;br /&gt;
Data types:&lt;br /&gt;
* uint32_t: an unsigned, little endian integer&lt;br /&gt;
* uint256_t: bitcoin-like 256-bit hash value&lt;br /&gt;
&lt;br /&gt;
Layout of a SIN record:&lt;br /&gt;
* uint32_t magic number (and/or version number) == 0x88, 0x41, 0x92, 0xA4&lt;br /&gt;
* uint256_t merkle root&lt;br /&gt;
* uint32_t data record count&lt;br /&gt;
* [list of data records]&lt;br /&gt;
* Signature&lt;br /&gt;
&lt;br /&gt;
Layout of a data record:&lt;br /&gt;
* uint32_t: record type (== 0x1 for hash, 0x2 for key/value pair)&lt;br /&gt;
* [data record-specific data]&lt;br /&gt;
&lt;br /&gt;
Layout of a hash data record:&lt;br /&gt;
* [32 bytes of hash data]&lt;br /&gt;
&lt;br /&gt;
Layout of a key/value data record:&lt;br /&gt;
* uint32_t key length&lt;br /&gt;
* uint32_t value length&lt;br /&gt;
* [key-length UTF8-encoded key]&lt;br /&gt;
* [value-length opaque data]&lt;br /&gt;
&lt;br /&gt;
Duplicate keys are not permitted.&lt;br /&gt;
&lt;br /&gt;
==Implementations==&lt;br /&gt;
&lt;br /&gt;
See&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SIN.js&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SINKey.js&lt;br /&gt;
https://github.com/ionux/php-ectools/blob/master/ecsingen.php&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=51112</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=51112"/>
		<updated>2014-09-14T19:01:54Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* SIN record */ no longer under &amp;quot;heavy development&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Fully decentralized, anonymous, secure identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Ownership may be digitally proven&lt;br /&gt;
* Attach sequence of key-value pairs (public proof) and hashes (private proof) to your SIN record.&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Disposable&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
* Third parties may offer digital attestions:&lt;br /&gt;
** Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
** Big Auction Provider, Inc. digitally signs a SIN as having a certain reputation score, on their website.&lt;br /&gt;
** Decentralized market users digitally sign one another&#039;s SINs, building a decentralized reputation&lt;br /&gt;
* Type-1 SINs:  have some creation cost, deterring spam.&lt;br /&gt;
* Type-1 SINs: Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
&lt;br /&gt;
tl;dr: A “master public key” generated by the user forms the root of digital trust.&lt;br /&gt;
&lt;br /&gt;
==Types of SINs==&lt;br /&gt;
&lt;br /&gt;
===Type 1 (persistent)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x01 (bitcoin main chain) or 0x11 (testnet)&lt;br /&gt;
&lt;br /&gt;
Type-1 SINs are intentionally scarce resources, much like bitcoins themselves.  All Type-1 SINs must conform to the sacrifice protocol described in this specification, to be considered valid.&lt;br /&gt;
&lt;br /&gt;
===Type 2 (ephemeral)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x02&lt;br /&gt;
&lt;br /&gt;
Type-2 SINs may be generated at any time, without network activity, much like bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
* MPK: Master Public Key.  ECDSA, using same curve as bitcoin (secp256k1).&lt;br /&gt;
* Hash160: ripemd160(sha256(data))&lt;br /&gt;
* base58_encode_check: see bitcoin source code, https://github.com/bitcoin/bitcoin/blob/master/src/base58.h&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x0F&lt;br /&gt;
# SIN_Type = [0x01 | 0x02 | 0x11] -- See below for discussion of SIN types.&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading if desired, inserting one hyphen after every 5th character.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For example, using the compressed public key:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
02F840A04114081690223B7069071A70D6DABB891763B638CC20C7EC3BD58E6C86&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 1 (SHA-256 of public key):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: cb05d0fd5e76ba8ea88323fc5d3eefd09a78d8e2a5fd4955307b549657a31330&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 2 (RIPEMD-160 of Step 1):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: cb1f4a4d793731842732c153b8e9923bdb462553&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3 (Prefix + SIN_Version + Step 2):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: 0F02cb1f4a4d793731842732c153b8e9923bdb462553&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 4 (Double SHA-256 of Step 3):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: 1a4214cdd79f55883263be8118d571c112cd4dbc9f8542d30daebd1231b522e9&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 5 (Checksum):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: 1a4214cd&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 6 (Step 5 + Step 3):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: 0F02cb1f4a4d793731842732c153b8e9923bdb4625531a4214cd&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SIN (Base58 encoded):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: TfG4ScDgysrSpodWD4Re5UtXmcLbY5CiUHA&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master ECDSA public key (compressed)&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==SIN record==&lt;br /&gt;
&lt;br /&gt;
A SIN record is a series of hashes or key/value pairs, validated by MPK digital signature.  Each SIN record has a stable binary encoding designed to ensure stable hash values.  This scheme is intentionally mirroring bitcoin&#039;s block header/merkle scheme.&lt;br /&gt;
&lt;br /&gt;
Data types:&lt;br /&gt;
* uint32_t: an unsigned, little endian integer&lt;br /&gt;
* uint256_t: bitcoin-like 256-bit hash value&lt;br /&gt;
&lt;br /&gt;
Layout of a SIN record:&lt;br /&gt;
* uint32_t magic number (and/or version number) == 0x88, 0x41, 0x92, 0xA4&lt;br /&gt;
* uint256_t merkle root&lt;br /&gt;
* uint32_t data record count&lt;br /&gt;
* [list of data records]&lt;br /&gt;
* Signature&lt;br /&gt;
&lt;br /&gt;
Layout of a data record:&lt;br /&gt;
* uint32_t: record type (== 0x1 for hash, 0x2 for key/value pair)&lt;br /&gt;
* [data record-specific data]&lt;br /&gt;
&lt;br /&gt;
Layout of a hash data record:&lt;br /&gt;
* [32 bytes of hash data]&lt;br /&gt;
&lt;br /&gt;
Layout of a key/value data record:&lt;br /&gt;
* uint32_t key length&lt;br /&gt;
* uint32_t value length&lt;br /&gt;
* [key-length UTF8-encoded key]&lt;br /&gt;
* [value-length opaque data]&lt;br /&gt;
&lt;br /&gt;
Duplicate keys are not permitted.&lt;br /&gt;
&lt;br /&gt;
==Implementations==&lt;br /&gt;
&lt;br /&gt;
See&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SIN.js&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SINKey.js&lt;br /&gt;
https://github.com/ionux/php-ectools/blob/master/ecsingen.php&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=51111</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=51111"/>
		<updated>2014-09-14T19:01:04Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* Design goals */ prettyify&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Fully decentralized, anonymous, secure identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Ownership may be digitally proven&lt;br /&gt;
* Attach sequence of key-value pairs (public proof) and hashes (private proof) to your SIN record.&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Disposable&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
* Third parties may offer digital attestions:&lt;br /&gt;
** Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
** Big Auction Provider, Inc. digitally signs a SIN as having a certain reputation score, on their website.&lt;br /&gt;
** Decentralized market users digitally sign one another&#039;s SINs, building a decentralized reputation&lt;br /&gt;
* Type-1 SINs:  have some creation cost, deterring spam.&lt;br /&gt;
* Type-1 SINs: Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
&lt;br /&gt;
tl;dr: A “master public key” generated by the user forms the root of digital trust.&lt;br /&gt;
&lt;br /&gt;
==Types of SINs==&lt;br /&gt;
&lt;br /&gt;
===Type 1 (persistent)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x01 (bitcoin main chain) or 0x11 (testnet)&lt;br /&gt;
&lt;br /&gt;
Type-1 SINs are intentionally scarce resources, much like bitcoins themselves.  All Type-1 SINs must conform to the sacrifice protocol described in this specification, to be considered valid.&lt;br /&gt;
&lt;br /&gt;
===Type 2 (ephemeral)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x02&lt;br /&gt;
&lt;br /&gt;
Type-2 SINs may be generated at any time, without network activity, much like bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
* MPK: Master Public Key.  ECDSA, using same curve as bitcoin (secp256k1).&lt;br /&gt;
* Hash160: ripemd160(sha256(data))&lt;br /&gt;
* base58_encode_check: see bitcoin source code, https://github.com/bitcoin/bitcoin/blob/master/src/base58.h&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x0F&lt;br /&gt;
# SIN_Type = [0x01 | 0x02 | 0x11] -- See below for discussion of SIN types.&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading if desired, inserting one hyphen after every 5th character.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For example, using the compressed public key:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
02F840A04114081690223B7069071A70D6DABB891763B638CC20C7EC3BD58E6C86&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 1 (SHA-256 of public key):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: cb05d0fd5e76ba8ea88323fc5d3eefd09a78d8e2a5fd4955307b549657a31330&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 2 (RIPEMD-160 of Step 1):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: cb1f4a4d793731842732c153b8e9923bdb462553&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3 (Prefix + SIN_Version + Step 2):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: 0F02cb1f4a4d793731842732c153b8e9923bdb462553&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 4 (Double SHA-256 of Step 3):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: 1a4214cdd79f55883263be8118d571c112cd4dbc9f8542d30daebd1231b522e9&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 5 (Checksum):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: 1a4214cd&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 6 (Step 5 + Step 3):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: 0F02cb1f4a4d793731842732c153b8e9923bdb4625531a4214cd&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SIN (Base58 encoded):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: TfG4ScDgysrSpodWD4Re5UtXmcLbY5CiUHA&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master ECDSA public key (compressed)&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==SIN record==&lt;br /&gt;
&lt;br /&gt;
DANGER:  This section is under heavy development and discussion.&lt;br /&gt;
&lt;br /&gt;
A SIN record is a series of hashes or key/value pairs, validated by MPK digital signature.  Each SIN record has a stable binary encoding designed to ensure stable hash values.  This scheme is intentionally mirroring bitcoin&#039;s block header/merkle scheme.&lt;br /&gt;
&lt;br /&gt;
Data types:&lt;br /&gt;
* uint32_t: an unsigned, little endian integer&lt;br /&gt;
* uint256_t: bitcoin-like 256-bit hash value&lt;br /&gt;
&lt;br /&gt;
Layout of a SIN record:&lt;br /&gt;
* uint32_t magic number (and/or version number) == 0x88, 0x41, 0x92, 0xA4&lt;br /&gt;
* uint256_t merkle root&lt;br /&gt;
* uint32_t data record count&lt;br /&gt;
* [list of data records]&lt;br /&gt;
* Signature&lt;br /&gt;
&lt;br /&gt;
Layout of a data record:&lt;br /&gt;
* uint32_t: record type (== 0x1 for hash, 0x2 for key/value pair)&lt;br /&gt;
* [data record-specific data]&lt;br /&gt;
&lt;br /&gt;
Layout of a hash data record:&lt;br /&gt;
* [32 bytes of hash data]&lt;br /&gt;
&lt;br /&gt;
Layout of a key/value data record:&lt;br /&gt;
* uint32_t key length&lt;br /&gt;
* uint32_t value length&lt;br /&gt;
* [key-length UTF8-encoded key]&lt;br /&gt;
* [value-length opaque data]&lt;br /&gt;
&lt;br /&gt;
Duplicate keys are not permitted.&lt;br /&gt;
&lt;br /&gt;
==Implementations==&lt;br /&gt;
&lt;br /&gt;
See&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SIN.js&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SINKey.js&lt;br /&gt;
https://github.com/ionux/php-ectools/blob/master/ecsingen.php&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=51110</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=51110"/>
		<updated>2014-09-14T19:00:29Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: improve summary&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Fully decentralized, anonymous, secure identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Ownership may be digitally proven&lt;br /&gt;
* Attach sequence of key-value pairs &#039;&#039;&#039;and&#039;&#039;&#039; hashes to your SIN record.&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Disposable&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
* Third parties may offer digital attestions:&lt;br /&gt;
** Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
** Big Auction Provider, Inc. digitally signs a SIN as having a certain reputation score, on their website.&lt;br /&gt;
** Decentralized market users digitally sign one another&#039;s SINs, building a decentralized reputation&lt;br /&gt;
* Type-1 SINs:  have some creation cost, deterring spam.&lt;br /&gt;
* Type-1 SINs: Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
&lt;br /&gt;
tl;dr: A “master public key” generated by the user forms the root of digital trust.&lt;br /&gt;
&lt;br /&gt;
==Types of SINs==&lt;br /&gt;
&lt;br /&gt;
===Type 1 (persistent)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x01 (bitcoin main chain) or 0x11 (testnet)&lt;br /&gt;
&lt;br /&gt;
Type-1 SINs are intentionally scarce resources, much like bitcoins themselves.  All Type-1 SINs must conform to the sacrifice protocol described in this specification, to be considered valid.&lt;br /&gt;
&lt;br /&gt;
===Type 2 (ephemeral)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x02&lt;br /&gt;
&lt;br /&gt;
Type-2 SINs may be generated at any time, without network activity, much like bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
* MPK: Master Public Key.  ECDSA, using same curve as bitcoin (secp256k1).&lt;br /&gt;
* Hash160: ripemd160(sha256(data))&lt;br /&gt;
* base58_encode_check: see bitcoin source code, https://github.com/bitcoin/bitcoin/blob/master/src/base58.h&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x0F&lt;br /&gt;
# SIN_Type = [0x01 | 0x02 | 0x11] -- See below for discussion of SIN types.&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading if desired, inserting one hyphen after every 5th character.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For example, using the compressed public key:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
02F840A04114081690223B7069071A70D6DABB891763B638CC20C7EC3BD58E6C86&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 1 (SHA-256 of public key):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: cb05d0fd5e76ba8ea88323fc5d3eefd09a78d8e2a5fd4955307b549657a31330&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 2 (RIPEMD-160 of Step 1):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: cb1f4a4d793731842732c153b8e9923bdb462553&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3 (Prefix + SIN_Version + Step 2):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: 0F02cb1f4a4d793731842732c153b8e9923bdb462553&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 4 (Double SHA-256 of Step 3):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: 1a4214cdd79f55883263be8118d571c112cd4dbc9f8542d30daebd1231b522e9&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 5 (Checksum):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: 1a4214cd&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 6 (Step 5 + Step 3):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: 0F02cb1f4a4d793731842732c153b8e9923bdb4625531a4214cd&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SIN (Base58 encoded):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
: TfG4ScDgysrSpodWD4Re5UtXmcLbY5CiUHA&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master ECDSA public key (compressed)&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==SIN record==&lt;br /&gt;
&lt;br /&gt;
DANGER:  This section is under heavy development and discussion.&lt;br /&gt;
&lt;br /&gt;
A SIN record is a series of hashes or key/value pairs, validated by MPK digital signature.  Each SIN record has a stable binary encoding designed to ensure stable hash values.  This scheme is intentionally mirroring bitcoin&#039;s block header/merkle scheme.&lt;br /&gt;
&lt;br /&gt;
Data types:&lt;br /&gt;
* uint32_t: an unsigned, little endian integer&lt;br /&gt;
* uint256_t: bitcoin-like 256-bit hash value&lt;br /&gt;
&lt;br /&gt;
Layout of a SIN record:&lt;br /&gt;
* uint32_t magic number (and/or version number) == 0x88, 0x41, 0x92, 0xA4&lt;br /&gt;
* uint256_t merkle root&lt;br /&gt;
* uint32_t data record count&lt;br /&gt;
* [list of data records]&lt;br /&gt;
* Signature&lt;br /&gt;
&lt;br /&gt;
Layout of a data record:&lt;br /&gt;
* uint32_t: record type (== 0x1 for hash, 0x2 for key/value pair)&lt;br /&gt;
* [data record-specific data]&lt;br /&gt;
&lt;br /&gt;
Layout of a hash data record:&lt;br /&gt;
* [32 bytes of hash data]&lt;br /&gt;
&lt;br /&gt;
Layout of a key/value data record:&lt;br /&gt;
* uint32_t key length&lt;br /&gt;
* uint32_t value length&lt;br /&gt;
* [key-length UTF8-encoded key]&lt;br /&gt;
* [value-length opaque data]&lt;br /&gt;
&lt;br /&gt;
Duplicate keys are not permitted.&lt;br /&gt;
&lt;br /&gt;
==Implementations==&lt;br /&gt;
&lt;br /&gt;
See&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SIN.js&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SINKey.js&lt;br /&gt;
https://github.com/ionux/php-ectools/blob/master/ecsingen.php&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=41190</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=41190"/>
		<updated>2013-09-20T20:42:47Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* SIN record */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Fully decentralized, anonymous, secure identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Ownership may be digitally proven&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Disposable&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
* Third parties may offer digital attestions:&lt;br /&gt;
** Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
** Big Auction Provider, Inc. digitally signs a SIN as having a certain reputation score, on their website.&lt;br /&gt;
** Decentralized market users digitally sign one another&#039;s SINs, building a decentralized reputation&lt;br /&gt;
* Type-1 SINs:  have some creation cost, deterring spam.&lt;br /&gt;
* Type-1 SINs: Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
&lt;br /&gt;
tl;dr: A “master public key” generated by the user forms the root of digital trust.&lt;br /&gt;
&lt;br /&gt;
==Types of SINs==&lt;br /&gt;
&lt;br /&gt;
===Type 1 (persistent)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x01 (bitcoin main chain) or 0x11 (testnet)&lt;br /&gt;
&lt;br /&gt;
Type-1 SINs are intentionally scarce resources, much like bitcoins themselves.  All Type-1 SINs must conform to the sacrifice protocol described in this specification, to be considered valid.&lt;br /&gt;
&lt;br /&gt;
===Type 2 (ephemeral)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x02&lt;br /&gt;
&lt;br /&gt;
Type-2 SINs may be generated at any time, without network activity, much like bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
* MPK: Master Public Key.  ECDSA, using same curve as bitcoin (secp256k1).&lt;br /&gt;
* Hash160: ripemd160(sha256(data))&lt;br /&gt;
* base58_encode_check: see bitcoin source code, https://github.com/bitcoin/bitcoin/blob/master/src/base58.h&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x0F&lt;br /&gt;
# SIN_Type = [0x01 | 0x02 | 0x11] -- See below for discussion of SIN types.&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading if desired, inserting one hyphen after every 5th character.&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master ECDSA public key (compressed)&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==SIN record==&lt;br /&gt;
&lt;br /&gt;
DANGER:  This section is under heavy development and discussion.&lt;br /&gt;
&lt;br /&gt;
A SIN record is a series of hashes or key/value pairs, validated by MPK digital signature.  Each SIN record has a stable binary encoding designed to ensure stable hash values.  This scheme is intentionally mirroring bitcoin&#039;s block header/merkle scheme.&lt;br /&gt;
&lt;br /&gt;
Data types:&lt;br /&gt;
* uint32_t: an unsigned, little endian integer&lt;br /&gt;
* uint256_t: bitcoin-like 256-bit hash value&lt;br /&gt;
&lt;br /&gt;
Layout of a SIN record:&lt;br /&gt;
* uint32_t magic number (and/or version number) == 0x88, 0x41, 0x92, 0xA4&lt;br /&gt;
* uint256_t merkle root&lt;br /&gt;
* uint32_t data record count&lt;br /&gt;
* [list of data records]&lt;br /&gt;
* Signature&lt;br /&gt;
&lt;br /&gt;
Layout of a data record:&lt;br /&gt;
* uint32_t: record type (== 0x1 for hash, 0x2 for key/value pair)&lt;br /&gt;
* [data record-specific data]&lt;br /&gt;
&lt;br /&gt;
Layout of a hash data record:&lt;br /&gt;
* [32 bytes of hash data]&lt;br /&gt;
&lt;br /&gt;
Layout of a key/value data record:&lt;br /&gt;
* uint32_t key length&lt;br /&gt;
* uint32_t value length&lt;br /&gt;
* [key-length UTF8-encoded key]&lt;br /&gt;
* [value-length opaque data]&lt;br /&gt;
&lt;br /&gt;
Duplicate keys are not permitted.&lt;br /&gt;
&lt;br /&gt;
==Implementations==&lt;br /&gt;
&lt;br /&gt;
See&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SIN.js&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SINKey.js&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=40578</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=40578"/>
		<updated>2013-08-28T22:21:15Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* SIN record */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Fully decentralized, anonymous, secure identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Ownership may be digitally proven&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Disposable&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
* Third parties may offer digital attestions:&lt;br /&gt;
** Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
** Big Auction Provider, Inc. digitally signs a SIN as having a certain reputation score, on their website.&lt;br /&gt;
** Decentralized market users digitally sign one another&#039;s SINs, building a decentralized reputation&lt;br /&gt;
* Type-1 SINs:  have some creation cost, deterring spam.&lt;br /&gt;
* Type-1 SINs: Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
&lt;br /&gt;
tl;dr: A “master public key” generated by the user forms the root of digital trust.&lt;br /&gt;
&lt;br /&gt;
==Types of SINs==&lt;br /&gt;
&lt;br /&gt;
===Type 1 (persistent)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x01 (bitcoin main chain) or 0x11 (testnet)&lt;br /&gt;
&lt;br /&gt;
Type-1 SINs are intentionally scarce resources, much like bitcoins themselves.  All Type-1 SINs must conform to the sacrifice protocol described in this specification, to be considered valid.&lt;br /&gt;
&lt;br /&gt;
===Type 2 (ephemeral)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x02&lt;br /&gt;
&lt;br /&gt;
Type-2 SINs may be generated at any time, without network activity, much like bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
* MPK: Master Public Key.  ECDSA, using same curve as bitcoin (secp256k1).&lt;br /&gt;
* Hash160: ripemd160(sha256(data))&lt;br /&gt;
* base58_encode_check: see bitcoin source code, https://github.com/bitcoin/bitcoin/blob/master/src/base58.h&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x0F&lt;br /&gt;
# SIN_Type = [0x01 | 0x02 | 0x11] -- See below for discussion of SIN types.&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading if desired, inserting one hyphen after every 5th character.&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master ECDSA public key (compressed)&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==SIN record==&lt;br /&gt;
&lt;br /&gt;
DANGER:  This section is under heavy development and discussion.&lt;br /&gt;
&lt;br /&gt;
A SIN record is a series of hashes or key/value pairs, validated by MPK digital signature.  Each SIN record has a stable binary encoding designed to ensure stable hash values.&lt;br /&gt;
&lt;br /&gt;
Data types:&lt;br /&gt;
* uint32_t: an unsigned, little endian integer&lt;br /&gt;
* uint256_t: bitcoin-like 256-bit hash value&lt;br /&gt;
&lt;br /&gt;
Layout of a SIN record:&lt;br /&gt;
* uint32_t magic number (and/or version number) == 0x88, 0x41, 0x92, 0xA4&lt;br /&gt;
* uint256_t merkle root&lt;br /&gt;
* uint32_t data record count&lt;br /&gt;
* [list of data records]&lt;br /&gt;
* Signature&lt;br /&gt;
&lt;br /&gt;
Layout of a data record:&lt;br /&gt;
* uint32_t: record type (== 0x1 for hash, 0x2 for key/value pair)&lt;br /&gt;
* [data record-specific data]&lt;br /&gt;
&lt;br /&gt;
Layout of a hash data record:&lt;br /&gt;
* [32 bytes of hash data]&lt;br /&gt;
&lt;br /&gt;
Layout of a key/value data record:&lt;br /&gt;
* uint32_t key length&lt;br /&gt;
* uint32_t value length&lt;br /&gt;
* [key-length UTF8-encoded key]&lt;br /&gt;
* [value-length opaque data]&lt;br /&gt;
&lt;br /&gt;
Duplicate keys are not permitted.&lt;br /&gt;
&lt;br /&gt;
==Implementations==&lt;br /&gt;
&lt;br /&gt;
See&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SIN.js&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SINKey.js&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=40577</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=40577"/>
		<updated>2013-08-28T22:19:51Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* SIN record */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Fully decentralized, anonymous, secure identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Ownership may be digitally proven&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Disposable&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
* Third parties may offer digital attestions:&lt;br /&gt;
** Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
** Big Auction Provider, Inc. digitally signs a SIN as having a certain reputation score, on their website.&lt;br /&gt;
** Decentralized market users digitally sign one another&#039;s SINs, building a decentralized reputation&lt;br /&gt;
* Type-1 SINs:  have some creation cost, deterring spam.&lt;br /&gt;
* Type-1 SINs: Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
&lt;br /&gt;
tl;dr: A “master public key” generated by the user forms the root of digital trust.&lt;br /&gt;
&lt;br /&gt;
==Types of SINs==&lt;br /&gt;
&lt;br /&gt;
===Type 1 (persistent)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x01 (bitcoin main chain) or 0x11 (testnet)&lt;br /&gt;
&lt;br /&gt;
Type-1 SINs are intentionally scarce resources, much like bitcoins themselves.  All Type-1 SINs must conform to the sacrifice protocol described in this specification, to be considered valid.&lt;br /&gt;
&lt;br /&gt;
===Type 2 (ephemeral)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x02&lt;br /&gt;
&lt;br /&gt;
Type-2 SINs may be generated at any time, without network activity, much like bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
* MPK: Master Public Key.  ECDSA, using same curve as bitcoin (secp256k1).&lt;br /&gt;
* Hash160: ripemd160(sha256(data))&lt;br /&gt;
* base58_encode_check: see bitcoin source code, https://github.com/bitcoin/bitcoin/blob/master/src/base58.h&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x0F&lt;br /&gt;
# SIN_Type = [0x01 | 0x02 | 0x11] -- See below for discussion of SIN types.&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading if desired, inserting one hyphen after every 5th character.&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master ECDSA public key (compressed)&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==SIN record==&lt;br /&gt;
&lt;br /&gt;
DANGER:  This section is under heavy development and discussion.  It might morph into merkle roots or another form.&lt;br /&gt;
&lt;br /&gt;
A SIN record is a series of hashes or key/value pairs, validated by MPK digital signature.  Each SIN record has a stable binary encoding designed to ensure stable hash values.&lt;br /&gt;
&lt;br /&gt;
Data types:&lt;br /&gt;
* uint32_t: an unsigned, little endian integer&lt;br /&gt;
* uint256_t: bitcoin-like 256-bit hash value&lt;br /&gt;
&lt;br /&gt;
Layout of a SIN record:&lt;br /&gt;
* uint32_t magic number (and/or version number) == 0x88, 0x41, 0x92, 0xA4&lt;br /&gt;
* uint256_t merkle root&lt;br /&gt;
* uint32_t data record count&lt;br /&gt;
* [list of data records]&lt;br /&gt;
* Signature&lt;br /&gt;
&lt;br /&gt;
Layout of a data record:&lt;br /&gt;
* uint32_t: record type (== 0x1 for hash, 0x2 for key/value pair)&lt;br /&gt;
* [data record-specific data]&lt;br /&gt;
&lt;br /&gt;
Layout of a hash data record:&lt;br /&gt;
* [32 bytes of hash data]&lt;br /&gt;
&lt;br /&gt;
Layout of a key/value data record:&lt;br /&gt;
* uint32_t key length&lt;br /&gt;
* uint32_t value length&lt;br /&gt;
* [key-length UTF8-encoded key]&lt;br /&gt;
* [value-length opaque data]&lt;br /&gt;
&lt;br /&gt;
Duplicate keys are not permitted.&lt;br /&gt;
&lt;br /&gt;
==Implementations==&lt;br /&gt;
&lt;br /&gt;
See&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SIN.js&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SINKey.js&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=40575</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=40575"/>
		<updated>2013-08-28T22:18:08Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* SIN record */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Fully decentralized, anonymous, secure identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Ownership may be digitally proven&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Disposable&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
* Third parties may offer digital attestions:&lt;br /&gt;
** Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
** Big Auction Provider, Inc. digitally signs a SIN as having a certain reputation score, on their website.&lt;br /&gt;
** Decentralized market users digitally sign one another&#039;s SINs, building a decentralized reputation&lt;br /&gt;
* Type-1 SINs:  have some creation cost, deterring spam.&lt;br /&gt;
* Type-1 SINs: Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
&lt;br /&gt;
tl;dr: A “master public key” generated by the user forms the root of digital trust.&lt;br /&gt;
&lt;br /&gt;
==Types of SINs==&lt;br /&gt;
&lt;br /&gt;
===Type 1 (persistent)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x01 (bitcoin main chain) or 0x11 (testnet)&lt;br /&gt;
&lt;br /&gt;
Type-1 SINs are intentionally scarce resources, much like bitcoins themselves.  All Type-1 SINs must conform to the sacrifice protocol described in this specification, to be considered valid.&lt;br /&gt;
&lt;br /&gt;
===Type 2 (ephemeral)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x02&lt;br /&gt;
&lt;br /&gt;
Type-2 SINs may be generated at any time, without network activity, much like bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
* MPK: Master Public Key.  ECDSA, using same curve as bitcoin (secp256k1).&lt;br /&gt;
* Hash160: ripemd160(sha256(data))&lt;br /&gt;
* base58_encode_check: see bitcoin source code, https://github.com/bitcoin/bitcoin/blob/master/src/base58.h&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x0F&lt;br /&gt;
# SIN_Type = [0x01 | 0x02 | 0x11] -- See below for discussion of SIN types.&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading if desired, inserting one hyphen after every 5th character.&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master ECDSA public key (compressed)&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==SIN record==&lt;br /&gt;
&lt;br /&gt;
DANGER:  This section is under heavy development and discussion.  It might morph into merkle roots or another form.&lt;br /&gt;
&lt;br /&gt;
A SIN record is a series of key/value pairs, validated by MPK digital signature.  Each SIN record has a stable binary encoding designed to ensure stable hash values.&lt;br /&gt;
&lt;br /&gt;
Data types:&lt;br /&gt;
* uint32_t: an unsigned, little endian integer&lt;br /&gt;
* uint256_t: bitcoin-like 256-bit hash value&lt;br /&gt;
&lt;br /&gt;
Layout of a SIN record:&lt;br /&gt;
* uint32_t magic number (and/or version number) == 0x88, 0x41, 0x92, 0xA4&lt;br /&gt;
* uint256_t merkle root&lt;br /&gt;
* uint32_t data record count&lt;br /&gt;
* [list of data records]&lt;br /&gt;
* Signature&lt;br /&gt;
&lt;br /&gt;
Layout of a data record:&lt;br /&gt;
* uint32_t: record type (== 0x1 for hash, 0x2 for key/value pair)&lt;br /&gt;
* [data record-specific data]&lt;br /&gt;
&lt;br /&gt;
Layout of a hash data record:&lt;br /&gt;
* [32 bytes of hash data]&lt;br /&gt;
&lt;br /&gt;
Layout of a key/value data record:&lt;br /&gt;
* uint32_t key length&lt;br /&gt;
* uint32_t value length&lt;br /&gt;
* [key-length UTF8-encoded key]&lt;br /&gt;
* [value-length opaque data]&lt;br /&gt;
&lt;br /&gt;
Duplicate keys are not permitted.&lt;br /&gt;
&lt;br /&gt;
==Implementations==&lt;br /&gt;
&lt;br /&gt;
See&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SIN.js&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SINKey.js&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=40574</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=40574"/>
		<updated>2013-08-28T22:17:00Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* SIN record */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Fully decentralized, anonymous, secure identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Ownership may be digitally proven&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Disposable&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
* Third parties may offer digital attestions:&lt;br /&gt;
** Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
** Big Auction Provider, Inc. digitally signs a SIN as having a certain reputation score, on their website.&lt;br /&gt;
** Decentralized market users digitally sign one another&#039;s SINs, building a decentralized reputation&lt;br /&gt;
* Type-1 SINs:  have some creation cost, deterring spam.&lt;br /&gt;
* Type-1 SINs: Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
&lt;br /&gt;
tl;dr: A “master public key” generated by the user forms the root of digital trust.&lt;br /&gt;
&lt;br /&gt;
==Types of SINs==&lt;br /&gt;
&lt;br /&gt;
===Type 1 (persistent)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x01 (bitcoin main chain) or 0x11 (testnet)&lt;br /&gt;
&lt;br /&gt;
Type-1 SINs are intentionally scarce resources, much like bitcoins themselves.  All Type-1 SINs must conform to the sacrifice protocol described in this specification, to be considered valid.&lt;br /&gt;
&lt;br /&gt;
===Type 2 (ephemeral)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x02&lt;br /&gt;
&lt;br /&gt;
Type-2 SINs may be generated at any time, without network activity, much like bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
* MPK: Master Public Key.  ECDSA, using same curve as bitcoin (secp256k1).&lt;br /&gt;
* Hash160: ripemd160(sha256(data))&lt;br /&gt;
* base58_encode_check: see bitcoin source code, https://github.com/bitcoin/bitcoin/blob/master/src/base58.h&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x0F&lt;br /&gt;
# SIN_Type = [0x01 | 0x02 | 0x11] -- See below for discussion of SIN types.&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading if desired, inserting one hyphen after every 5th character.&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master ECDSA public key (compressed)&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==SIN record==&lt;br /&gt;
&lt;br /&gt;
DANGER:  This section is under heavy development and discussion.  It might morph into merkle roots or another form.&lt;br /&gt;
&lt;br /&gt;
A SIN record is a series of key/value pairs, validated by MPK digital signature.  Each SIN record has a stable binary encoding designed to ensure stable hash values.&lt;br /&gt;
&lt;br /&gt;
Data types:&lt;br /&gt;
* uint32_t: an unsigned, little endian integer&lt;br /&gt;
* uint256_t: bitcoin-like 256-bit hash value&lt;br /&gt;
&lt;br /&gt;
Layout of a SIN record:&lt;br /&gt;
* uint32_t magic number (and/or version number) == 0x88, 0x41, 0x92, 0xA4&lt;br /&gt;
* uint256_t merkle root&lt;br /&gt;
* uint32_t data record count&lt;br /&gt;
* [list of data records]&lt;br /&gt;
* Signature&lt;br /&gt;
&lt;br /&gt;
Layout of a data record:&lt;br /&gt;
* uint32_t: record type (== 0x1 for hash, 0x2 for key/value pair)&lt;br /&gt;
* [data record-specific data]&lt;br /&gt;
&lt;br /&gt;
Layout of a hash data record:&lt;br /&gt;
* [32 bytes of hash data]&lt;br /&gt;
&lt;br /&gt;
Layout of a key/value data record:&lt;br /&gt;
* uint32_t key length&lt;br /&gt;
* uint32_t value length&lt;br /&gt;
* [key-length UTF8-encoded key]&lt;br /&gt;
* [value-length opaque data]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The order of key/value pairs must be preserved, to ensure hash stability.&lt;br /&gt;
&lt;br /&gt;
Duplicate keys are not permitted.&lt;br /&gt;
&lt;br /&gt;
==Implementations==&lt;br /&gt;
&lt;br /&gt;
See&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SIN.js&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SINKey.js&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=40573</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=40573"/>
		<updated>2013-08-28T22:16:26Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* SIN record */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Fully decentralized, anonymous, secure identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Ownership may be digitally proven&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Disposable&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
* Third parties may offer digital attestions:&lt;br /&gt;
** Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
** Big Auction Provider, Inc. digitally signs a SIN as having a certain reputation score, on their website.&lt;br /&gt;
** Decentralized market users digitally sign one another&#039;s SINs, building a decentralized reputation&lt;br /&gt;
* Type-1 SINs:  have some creation cost, deterring spam.&lt;br /&gt;
* Type-1 SINs: Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
&lt;br /&gt;
tl;dr: A “master public key” generated by the user forms the root of digital trust.&lt;br /&gt;
&lt;br /&gt;
==Types of SINs==&lt;br /&gt;
&lt;br /&gt;
===Type 1 (persistent)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x01 (bitcoin main chain) or 0x11 (testnet)&lt;br /&gt;
&lt;br /&gt;
Type-1 SINs are intentionally scarce resources, much like bitcoins themselves.  All Type-1 SINs must conform to the sacrifice protocol described in this specification, to be considered valid.&lt;br /&gt;
&lt;br /&gt;
===Type 2 (ephemeral)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x02&lt;br /&gt;
&lt;br /&gt;
Type-2 SINs may be generated at any time, without network activity, much like bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
* MPK: Master Public Key.  ECDSA, using same curve as bitcoin (secp256k1).&lt;br /&gt;
* Hash160: ripemd160(sha256(data))&lt;br /&gt;
* base58_encode_check: see bitcoin source code, https://github.com/bitcoin/bitcoin/blob/master/src/base58.h&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x0F&lt;br /&gt;
# SIN_Type = [0x01 | 0x02 | 0x11] -- See below for discussion of SIN types.&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading if desired, inserting one hyphen after every 5th character.&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master ECDSA public key (compressed)&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==SIN record==&lt;br /&gt;
&lt;br /&gt;
DANGER:  This section is under heavy development and discussion.  It might morph into merkle roots or another form.&lt;br /&gt;
&lt;br /&gt;
A SIN record is a series of key/value pairs, validated by MPK digital signature.  Each SIN record has a stable binary encoding designed to ensure stable hash values.&lt;br /&gt;
&lt;br /&gt;
uint32_t: an unsigned, little endian integer&lt;br /&gt;
uint256_t: bitcoin-like 256-bit hash value&lt;br /&gt;
&lt;br /&gt;
Layout of a SIN record:&lt;br /&gt;
* uint32_t magic number (and/or version number) == 0x88, 0x41, 0x92, 0xA4&lt;br /&gt;
* uint256_t merkle root&lt;br /&gt;
* uint32_t data record count&lt;br /&gt;
* [list of data records]&lt;br /&gt;
* Signature&lt;br /&gt;
&lt;br /&gt;
Layout of a data record:&lt;br /&gt;
* uint32_t: record type (== 0x1 for hash, 0x2 for key/value pair)&lt;br /&gt;
* [data record-specific data]&lt;br /&gt;
&lt;br /&gt;
Layout of a hash data record:&lt;br /&gt;
* [32 bytes of hash data]&lt;br /&gt;
&lt;br /&gt;
Layout of a key/value data record:&lt;br /&gt;
* uint32_t key length&lt;br /&gt;
* uint32_t value length&lt;br /&gt;
* [key-length UTF8-encoded key]&lt;br /&gt;
* [value-length opaque data]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The order of key/value pairs must be preserved, to ensure hash stability.&lt;br /&gt;
&lt;br /&gt;
Duplicate keys are not permitted.&lt;br /&gt;
&lt;br /&gt;
==Implementations==&lt;br /&gt;
&lt;br /&gt;
See&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SIN.js&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SINKey.js&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=40572</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=40572"/>
		<updated>2013-08-28T22:16:05Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* SIN record */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Fully decentralized, anonymous, secure identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Ownership may be digitally proven&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Disposable&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
* Third parties may offer digital attestions:&lt;br /&gt;
** Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
** Big Auction Provider, Inc. digitally signs a SIN as having a certain reputation score, on their website.&lt;br /&gt;
** Decentralized market users digitally sign one another&#039;s SINs, building a decentralized reputation&lt;br /&gt;
* Type-1 SINs:  have some creation cost, deterring spam.&lt;br /&gt;
* Type-1 SINs: Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
&lt;br /&gt;
tl;dr: A “master public key” generated by the user forms the root of digital trust.&lt;br /&gt;
&lt;br /&gt;
==Types of SINs==&lt;br /&gt;
&lt;br /&gt;
===Type 1 (persistent)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x01 (bitcoin main chain) or 0x11 (testnet)&lt;br /&gt;
&lt;br /&gt;
Type-1 SINs are intentionally scarce resources, much like bitcoins themselves.  All Type-1 SINs must conform to the sacrifice protocol described in this specification, to be considered valid.&lt;br /&gt;
&lt;br /&gt;
===Type 2 (ephemeral)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x02&lt;br /&gt;
&lt;br /&gt;
Type-2 SINs may be generated at any time, without network activity, much like bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
* MPK: Master Public Key.  ECDSA, using same curve as bitcoin (secp256k1).&lt;br /&gt;
* Hash160: ripemd160(sha256(data))&lt;br /&gt;
* base58_encode_check: see bitcoin source code, https://github.com/bitcoin/bitcoin/blob/master/src/base58.h&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x0F&lt;br /&gt;
# SIN_Type = [0x01 | 0x02 | 0x11] -- See below for discussion of SIN types.&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading if desired, inserting one hyphen after every 5th character.&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master ECDSA public key (compressed)&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==SIN record==&lt;br /&gt;
&lt;br /&gt;
DANGER:  This section is under heavy development and discussion.  It might morph into merkle roots or another form.&lt;br /&gt;
&lt;br /&gt;
A SIN record is a series of key/value pairs, validated by MPK digital signature.  Each SIN record has a stable binary encoding designed to ensure stable hash values.&lt;br /&gt;
&lt;br /&gt;
uint32_t: an unsigned, little endian integer&lt;br /&gt;
uint256_t: bitcoin-like 256-bit hash value&lt;br /&gt;
&lt;br /&gt;
Layout of a SIN record:&lt;br /&gt;
* uint32_t magic number (and/or version number) == 0x88, 0x41, 0x92, 0xA4&lt;br /&gt;
* uint256_t merkle root&lt;br /&gt;
* uint32_t data record count&lt;br /&gt;
* [list of data records]&lt;br /&gt;
* Signature&lt;br /&gt;
&lt;br /&gt;
Layout of a data record:&lt;br /&gt;
* uint32_t: record type (== 0x1 for hash, 0x2 for key/value pair)&lt;br /&gt;
[data record-specific data]&lt;br /&gt;
&lt;br /&gt;
Layout of a hash data record:&lt;br /&gt;
[32 bytes of hash data]&lt;br /&gt;
&lt;br /&gt;
Layout of a key/value data record:&lt;br /&gt;
uint32_t key length&lt;br /&gt;
uint32_t value length&lt;br /&gt;
[key-length UTF8-encoded key]&lt;br /&gt;
[value-length opaque data]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The order of key/value pairs must be preserved, to ensure hash stability.&lt;br /&gt;
&lt;br /&gt;
Duplicate keys are not permitted.&lt;br /&gt;
&lt;br /&gt;
==Implementations==&lt;br /&gt;
&lt;br /&gt;
See&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SIN.js&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SINKey.js&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=40571</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=40571"/>
		<updated>2013-08-28T22:05:19Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* SIN record */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Fully decentralized, anonymous, secure identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Ownership may be digitally proven&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Disposable&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
* Third parties may offer digital attestions:&lt;br /&gt;
** Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
** Big Auction Provider, Inc. digitally signs a SIN as having a certain reputation score, on their website.&lt;br /&gt;
** Decentralized market users digitally sign one another&#039;s SINs, building a decentralized reputation&lt;br /&gt;
* Type-1 SINs:  have some creation cost, deterring spam.&lt;br /&gt;
* Type-1 SINs: Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
&lt;br /&gt;
tl;dr: A “master public key” generated by the user forms the root of digital trust.&lt;br /&gt;
&lt;br /&gt;
==Types of SINs==&lt;br /&gt;
&lt;br /&gt;
===Type 1 (persistent)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x01 (bitcoin main chain) or 0x11 (testnet)&lt;br /&gt;
&lt;br /&gt;
Type-1 SINs are intentionally scarce resources, much like bitcoins themselves.  All Type-1 SINs must conform to the sacrifice protocol described in this specification, to be considered valid.&lt;br /&gt;
&lt;br /&gt;
===Type 2 (ephemeral)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x02&lt;br /&gt;
&lt;br /&gt;
Type-2 SINs may be generated at any time, without network activity, much like bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
* MPK: Master Public Key.  ECDSA, using same curve as bitcoin (secp256k1).&lt;br /&gt;
* Hash160: ripemd160(sha256(data))&lt;br /&gt;
* base58_encode_check: see bitcoin source code, https://github.com/bitcoin/bitcoin/blob/master/src/base58.h&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x0F&lt;br /&gt;
# SIN_Type = [0x01 | 0x02 | 0x11] -- See below for discussion of SIN types.&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading if desired, inserting one hyphen after every 5th character.&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master ECDSA public key (compressed)&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==SIN record==&lt;br /&gt;
&lt;br /&gt;
DANGER:  This section is under heavy development and discussion.  It might morph into merkle roots or another form.&lt;br /&gt;
&lt;br /&gt;
A SIN record is a series of key/value pairs, validated by MPK digital signature.  Each SIN record has a stable binary encoding designed to ensure stable hash values.&lt;br /&gt;
&lt;br /&gt;
uint32_t: an unsigned, little endian integer&lt;br /&gt;
&lt;br /&gt;
Basic layout:&lt;br /&gt;
* uint32_t magic number (and/or version number) == 0x88, 0x41, 0x92, 0xA4&lt;br /&gt;
* uint32_t pair count&lt;br /&gt;
* [list of key/value pairs]&lt;br /&gt;
* Hash160(prior data)&lt;br /&gt;
&lt;br /&gt;
Basic layout of a key/value pair:&lt;br /&gt;
* uint32_t key length&lt;br /&gt;
* uint32_t value length&lt;br /&gt;
* [key-length bytes of valid UTF8-encoded data]&lt;br /&gt;
* [value-length bytes of opaque data]&lt;br /&gt;
&lt;br /&gt;
The order of key/value pairs must be preserved, to ensure hash stability.&lt;br /&gt;
&lt;br /&gt;
Duplicate keys are not permitted.&lt;br /&gt;
&lt;br /&gt;
==Implementations==&lt;br /&gt;
&lt;br /&gt;
See&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SIN.js&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SINKey.js&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=40570</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=40570"/>
		<updated>2013-08-28T21:32:50Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* SIN record */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Fully decentralized, anonymous, secure identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Ownership may be digitally proven&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Disposable&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
* Third parties may offer digital attestions:&lt;br /&gt;
** Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
** Big Auction Provider, Inc. digitally signs a SIN as having a certain reputation score, on their website.&lt;br /&gt;
** Decentralized market users digitally sign one another&#039;s SINs, building a decentralized reputation&lt;br /&gt;
* Type-1 SINs:  have some creation cost, deterring spam.&lt;br /&gt;
* Type-1 SINs: Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
&lt;br /&gt;
tl;dr: A “master public key” generated by the user forms the root of digital trust.&lt;br /&gt;
&lt;br /&gt;
==Types of SINs==&lt;br /&gt;
&lt;br /&gt;
===Type 1 (persistent)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x01 (bitcoin main chain) or 0x11 (testnet)&lt;br /&gt;
&lt;br /&gt;
Type-1 SINs are intentionally scarce resources, much like bitcoins themselves.  All Type-1 SINs must conform to the sacrifice protocol described in this specification, to be considered valid.&lt;br /&gt;
&lt;br /&gt;
===Type 2 (ephemeral)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x02&lt;br /&gt;
&lt;br /&gt;
Type-2 SINs may be generated at any time, without network activity, much like bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
* MPK: Master Public Key.  ECDSA, using same curve as bitcoin (secp256k1).&lt;br /&gt;
* Hash160: ripemd160(sha256(data))&lt;br /&gt;
* base58_encode_check: see bitcoin source code, https://github.com/bitcoin/bitcoin/blob/master/src/base58.h&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x0F&lt;br /&gt;
# SIN_Type = [0x01 | 0x02 | 0x11] -- See below for discussion of SIN types.&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading if desired, inserting one hyphen after every 5th character.&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master ECDSA public key (compressed)&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==SIN record==&lt;br /&gt;
&lt;br /&gt;
A SIN record is a series of key/value pairs, validated by MPK digital signature.  Each SIN record has a stable binary encoding designed to ensure stable hash values.&lt;br /&gt;
&lt;br /&gt;
uint32_t: an unsigned, little endian integer&lt;br /&gt;
&lt;br /&gt;
Basic layout:&lt;br /&gt;
* uint32_t magic number (and/or version number) == 0x88, 0x41, 0x92, 0xA4&lt;br /&gt;
* uint32_t pair count&lt;br /&gt;
* [list of key/value pairs]&lt;br /&gt;
* Hash160(prior data)&lt;br /&gt;
&lt;br /&gt;
Basic layout of a key/value pair:&lt;br /&gt;
* uint32_t key length&lt;br /&gt;
* uint32_t value length&lt;br /&gt;
* [key-length bytes of valid UTF8-encoded data]&lt;br /&gt;
* [value-length bytes of opaque data]&lt;br /&gt;
&lt;br /&gt;
The order of key/value pairs must be preserved, to ensure hash stability.&lt;br /&gt;
&lt;br /&gt;
Duplicate keys are not permitted.&lt;br /&gt;
&lt;br /&gt;
==Implementations==&lt;br /&gt;
&lt;br /&gt;
See&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SIN.js&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SINKey.js&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=40569</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=40569"/>
		<updated>2013-08-28T21:31:19Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* SIN record */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Fully decentralized, anonymous, secure identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Ownership may be digitally proven&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Disposable&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
* Third parties may offer digital attestions:&lt;br /&gt;
** Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
** Big Auction Provider, Inc. digitally signs a SIN as having a certain reputation score, on their website.&lt;br /&gt;
** Decentralized market users digitally sign one another&#039;s SINs, building a decentralized reputation&lt;br /&gt;
* Type-1 SINs:  have some creation cost, deterring spam.&lt;br /&gt;
* Type-1 SINs: Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
&lt;br /&gt;
tl;dr: A “master public key” generated by the user forms the root of digital trust.&lt;br /&gt;
&lt;br /&gt;
==Types of SINs==&lt;br /&gt;
&lt;br /&gt;
===Type 1 (persistent)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x01 (bitcoin main chain) or 0x11 (testnet)&lt;br /&gt;
&lt;br /&gt;
Type-1 SINs are intentionally scarce resources, much like bitcoins themselves.  All Type-1 SINs must conform to the sacrifice protocol described in this specification, to be considered valid.&lt;br /&gt;
&lt;br /&gt;
===Type 2 (ephemeral)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x02&lt;br /&gt;
&lt;br /&gt;
Type-2 SINs may be generated at any time, without network activity, much like bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
* MPK: Master Public Key.  ECDSA, using same curve as bitcoin (secp256k1).&lt;br /&gt;
* Hash160: ripemd160(sha256(data))&lt;br /&gt;
* base58_encode_check: see bitcoin source code, https://github.com/bitcoin/bitcoin/blob/master/src/base58.h&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x0F&lt;br /&gt;
# SIN_Type = [0x01 | 0x02 | 0x11] -- See below for discussion of SIN types.&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading if desired, inserting one hyphen after every 5th character.&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master ECDSA public key (compressed)&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==SIN record==&lt;br /&gt;
&lt;br /&gt;
A SIN record is a series of key/value pairs, validated by MPK digital signature.  Each SIN record has a stable binary encoding designed to ensure stable hash values.&lt;br /&gt;
&lt;br /&gt;
uint32_t: an unsigned, little endian integer&lt;br /&gt;
&lt;br /&gt;
Basic layout:&lt;br /&gt;
* uint32_t pair count&lt;br /&gt;
* [list of key/value pairs]&lt;br /&gt;
* Hash160(prior data)&lt;br /&gt;
&lt;br /&gt;
Basic layout of a key/value pair:&lt;br /&gt;
* uint32_t key length&lt;br /&gt;
* uint32_t value length&lt;br /&gt;
* [key-length bytes of valid UTF8-encoded data]&lt;br /&gt;
* [value-length bytes of opaque data]&lt;br /&gt;
&lt;br /&gt;
The order of key/value pairs must be preserved, to ensure hash stability.&lt;br /&gt;
&lt;br /&gt;
Duplicate keys are not permitted.&lt;br /&gt;
&lt;br /&gt;
==Implementations==&lt;br /&gt;
&lt;br /&gt;
See&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SIN.js&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SINKey.js&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=40568</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=40568"/>
		<updated>2013-08-28T21:30:33Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* SIN record */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Fully decentralized, anonymous, secure identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Ownership may be digitally proven&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Disposable&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
* Third parties may offer digital attestions:&lt;br /&gt;
** Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
** Big Auction Provider, Inc. digitally signs a SIN as having a certain reputation score, on their website.&lt;br /&gt;
** Decentralized market users digitally sign one another&#039;s SINs, building a decentralized reputation&lt;br /&gt;
* Type-1 SINs:  have some creation cost, deterring spam.&lt;br /&gt;
* Type-1 SINs: Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
&lt;br /&gt;
tl;dr: A “master public key” generated by the user forms the root of digital trust.&lt;br /&gt;
&lt;br /&gt;
==Types of SINs==&lt;br /&gt;
&lt;br /&gt;
===Type 1 (persistent)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x01 (bitcoin main chain) or 0x11 (testnet)&lt;br /&gt;
&lt;br /&gt;
Type-1 SINs are intentionally scarce resources, much like bitcoins themselves.  All Type-1 SINs must conform to the sacrifice protocol described in this specification, to be considered valid.&lt;br /&gt;
&lt;br /&gt;
===Type 2 (ephemeral)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x02&lt;br /&gt;
&lt;br /&gt;
Type-2 SINs may be generated at any time, without network activity, much like bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
* MPK: Master Public Key.  ECDSA, using same curve as bitcoin (secp256k1).&lt;br /&gt;
* Hash160: ripemd160(sha256(data))&lt;br /&gt;
* base58_encode_check: see bitcoin source code, https://github.com/bitcoin/bitcoin/blob/master/src/base58.h&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x0F&lt;br /&gt;
# SIN_Type = [0x01 | 0x02 | 0x11] -- See below for discussion of SIN types.&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading if desired, inserting one hyphen after every 5th character.&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master ECDSA public key (compressed)&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==SIN record==&lt;br /&gt;
&lt;br /&gt;
A SIN record is a series of key/value pairs, validated by MPK digital signature.  Each SIN record has a stable binary encoding designed to ensure stable hash values.&lt;br /&gt;
&lt;br /&gt;
uint32_t: an unsigned, little endian integer&lt;br /&gt;
&lt;br /&gt;
Basic layout:&lt;br /&gt;
uint32_t pair count&lt;br /&gt;
[list of key/value pairs]&lt;br /&gt;
Hash160(prior data)&lt;br /&gt;
&lt;br /&gt;
Basic layout of a key/value pair:&lt;br /&gt;
uint32_t key length&lt;br /&gt;
uint32_t value length&lt;br /&gt;
[key-length bytes of valid UTF8-encoded data]&lt;br /&gt;
[value-length bytes of opaque data]&lt;br /&gt;
&lt;br /&gt;
The order of key/value pairs must be preserved, to ensure hash stability.&lt;br /&gt;
&lt;br /&gt;
Duplicate keys are not permitted.&lt;br /&gt;
&lt;br /&gt;
==Implementations==&lt;br /&gt;
&lt;br /&gt;
See&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SIN.js&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SINKey.js&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=40562</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=40562"/>
		<updated>2013-08-28T21:18:20Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* SIN record */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Fully decentralized, anonymous, secure identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Ownership may be digitally proven&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Disposable&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
* Third parties may offer digital attestions:&lt;br /&gt;
** Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
** Big Auction Provider, Inc. digitally signs a SIN as having a certain reputation score, on their website.&lt;br /&gt;
** Decentralized market users digitally sign one another&#039;s SINs, building a decentralized reputation&lt;br /&gt;
* Type-1 SINs:  have some creation cost, deterring spam.&lt;br /&gt;
* Type-1 SINs: Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
&lt;br /&gt;
tl;dr: A “master public key” generated by the user forms the root of digital trust.&lt;br /&gt;
&lt;br /&gt;
==Types of SINs==&lt;br /&gt;
&lt;br /&gt;
===Type 1 (persistent)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x01 (bitcoin main chain) or 0x11 (testnet)&lt;br /&gt;
&lt;br /&gt;
Type-1 SINs are intentionally scarce resources, much like bitcoins themselves.  All Type-1 SINs must conform to the sacrifice protocol described in this specification, to be considered valid.&lt;br /&gt;
&lt;br /&gt;
===Type 2 (ephemeral)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x02&lt;br /&gt;
&lt;br /&gt;
Type-2 SINs may be generated at any time, without network activity, much like bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
* MPK: Master Public Key.  ECDSA, using same curve as bitcoin (secp256k1).&lt;br /&gt;
* Hash160: ripemd160(sha256(data))&lt;br /&gt;
* base58_encode_check: see bitcoin source code, https://github.com/bitcoin/bitcoin/blob/master/src/base58.h&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x0F&lt;br /&gt;
# SIN_Type = [0x01 | 0x02 | 0x11] -- See below for discussion of SIN types.&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading if desired, inserting one hyphen after every 5th character.&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master ECDSA public key (compressed)&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==SIN record==&lt;br /&gt;
&lt;br /&gt;
A SIN record is a series of key/value pairs, validated by MPK digital signature.  Each SIN record has a stable binary encoding designed to ensure stable hash values.&lt;br /&gt;
&lt;br /&gt;
==Implementations==&lt;br /&gt;
&lt;br /&gt;
See&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SIN.js&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SINKey.js&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=40561</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=40561"/>
		<updated>2013-08-28T21:17:28Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: add SIN record section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Fully decentralized, anonymous, secure identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Ownership may be digitally proven&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Disposable&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
* Third parties may offer digital attestions:&lt;br /&gt;
** Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
** Big Auction Provider, Inc. digitally signs a SIN as having a certain reputation score, on their website.&lt;br /&gt;
** Decentralized market users digitally sign one another&#039;s SINs, building a decentralized reputation&lt;br /&gt;
* Type-1 SINs:  have some creation cost, deterring spam.&lt;br /&gt;
* Type-1 SINs: Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
&lt;br /&gt;
tl;dr: A “master public key” generated by the user forms the root of digital trust.&lt;br /&gt;
&lt;br /&gt;
==Types of SINs==&lt;br /&gt;
&lt;br /&gt;
===Type 1 (persistent)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x01 (bitcoin main chain) or 0x11 (testnet)&lt;br /&gt;
&lt;br /&gt;
Type-1 SINs are intentionally scarce resources, much like bitcoins themselves.  All Type-1 SINs must conform to the sacrifice protocol described in this specification, to be considered valid.&lt;br /&gt;
&lt;br /&gt;
===Type 2 (ephemeral)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x02&lt;br /&gt;
&lt;br /&gt;
Type-2 SINs may be generated at any time, without network activity, much like bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
* MPK: Master Public Key.  ECDSA, using same curve as bitcoin (secp256k1).&lt;br /&gt;
* Hash160: ripemd160(sha256(data))&lt;br /&gt;
* base58_encode_check: see bitcoin source code, https://github.com/bitcoin/bitcoin/blob/master/src/base58.h&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x0F&lt;br /&gt;
# SIN_Type = [0x01 | 0x02 | 0x11] -- See below for discussion of SIN types.&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading if desired, inserting one hyphen after every 5th character.&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master ECDSA public key (compressed)&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==SIN record==&lt;br /&gt;
&lt;br /&gt;
A SIN record is a series of key/value pairs, validated by MPK digital siganture.  Each SIN record has a stable binary encoding designed to ensure stable hash values.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Implementations==&lt;br /&gt;
&lt;br /&gt;
See&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SIN.js&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SINKey.js&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=40243</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=40243"/>
		<updated>2013-08-17T05:27:09Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* Creating a SIN */ hyphenation guidelines&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Fully decentralized, anonymous, secure identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Ownership may be digitally proven&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Disposable&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
* Third parties may offer digital attestions:&lt;br /&gt;
** Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
** Big Auction Provider, Inc. digitally signs a SIN as having a certain reputation score, on their website.&lt;br /&gt;
** Decentralized market users digitally sign one another&#039;s SINs, building a decentralized reputation&lt;br /&gt;
* Type-1 SINs:  have some creation cost, deterring spam.&lt;br /&gt;
* Type-1 SINs: Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
&lt;br /&gt;
tl;dr: A “master public key” generated by the user forms the root of digital trust.&lt;br /&gt;
&lt;br /&gt;
==Types of SINs==&lt;br /&gt;
&lt;br /&gt;
===Type 1 (persistent)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x01 (bitcoin main chain) or 0x11 (testnet)&lt;br /&gt;
&lt;br /&gt;
Type-1 SINs are intentionally scarce resources, much like bitcoins themselves.  All Type-1 SINs must conform to the sacrifice protocol described in this specification, to be considered valid.&lt;br /&gt;
&lt;br /&gt;
===Type 2 (ephemeral)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x02&lt;br /&gt;
&lt;br /&gt;
Type-2 SINs may be generated at any time, without network activity, much like bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
* MPK: Master Public Key.  ECDSA, using same curve as bitcoin (secp256k1).&lt;br /&gt;
* Hash160: ripemd160(sha256(data))&lt;br /&gt;
* base58_encode_check: see bitcoin source code, https://github.com/bitcoin/bitcoin/blob/master/src/base58.h&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x0F&lt;br /&gt;
# SIN_Type = [0x01 | 0x02 | 0x11] -- See below for discussion of SIN types.&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading if desired, inserting one hyphen after every 5th character.&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master ECDSA public key (compressed)&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==Implementations==&lt;br /&gt;
&lt;br /&gt;
See&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SIN.js&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SINKey.js&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=40242</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=40242"/>
		<updated>2013-08-17T05:18:38Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* Definitions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Fully decentralized, anonymous, secure identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Ownership may be digitally proven&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Disposable&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
* Third parties may offer digital attestions:&lt;br /&gt;
** Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
** Big Auction Provider, Inc. digitally signs a SIN as having a certain reputation score, on their website.&lt;br /&gt;
** Decentralized market users digitally sign one another&#039;s SINs, building a decentralized reputation&lt;br /&gt;
* Type-1 SINs:  have some creation cost, deterring spam.&lt;br /&gt;
* Type-1 SINs: Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
&lt;br /&gt;
tl;dr: A “master public key” generated by the user forms the root of digital trust.&lt;br /&gt;
&lt;br /&gt;
==Types of SINs==&lt;br /&gt;
&lt;br /&gt;
===Type 1 (persistent)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x01 (bitcoin main chain) or 0x11 (testnet)&lt;br /&gt;
&lt;br /&gt;
Type-1 SINs are intentionally scarce resources, much like bitcoins themselves.  All Type-1 SINs must conform to the sacrifice protocol described in this specification, to be considered valid.&lt;br /&gt;
&lt;br /&gt;
===Type 2 (ephemeral)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x02&lt;br /&gt;
&lt;br /&gt;
Type-2 SINs may be generated at any time, without network activity, much like bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
* MPK: Master Public Key.  ECDSA, using same curve as bitcoin (secp256k1).&lt;br /&gt;
* Hash160: ripemd160(sha256(data))&lt;br /&gt;
* base58_encode_check: see bitcoin source code, https://github.com/bitcoin/bitcoin/blob/master/src/base58.h&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x0F&lt;br /&gt;
# SIN_Type = [0x01 | 0x02 | 0x11] -- See below for discussion of SIN types.&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master ECDSA public key (compressed)&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==Implementations==&lt;br /&gt;
&lt;br /&gt;
See&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SIN.js&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SINKey.js&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=40241</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=40241"/>
		<updated>2013-08-17T05:16:45Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: Add link to example implementation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Fully decentralized, anonymous, secure identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Ownership may be digitally proven&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Disposable&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
* Third parties may offer digital attestions:&lt;br /&gt;
** Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
** Big Auction Provider, Inc. digitally signs a SIN as having a certain reputation score, on their website.&lt;br /&gt;
** Decentralized market users digitally sign one another&#039;s SINs, building a decentralized reputation&lt;br /&gt;
* Type-1 SINs:  have some creation cost, deterring spam.&lt;br /&gt;
* Type-1 SINs: Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
&lt;br /&gt;
tl;dr: A “master public key” generated by the user forms the root of digital trust.&lt;br /&gt;
&lt;br /&gt;
==Types of SINs==&lt;br /&gt;
&lt;br /&gt;
===Type 1 (persistent)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x01 (bitcoin main chain) or 0x11 (testnet)&lt;br /&gt;
&lt;br /&gt;
Type-1 SINs are intentionally scarce resources, much like bitcoins themselves.  All Type-1 SINs must conform to the sacrifice protocol described in this specification, to be considered valid.&lt;br /&gt;
&lt;br /&gt;
===Type 2 (ephemeral)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x02&lt;br /&gt;
&lt;br /&gt;
Type-2 SINs may be generated at any time, without network activity, much like bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
* MPK: Master Public Key.  ECDSA, using same curve as bitcoin.&lt;br /&gt;
* Hash160: ripemd160(sha256(data))&lt;br /&gt;
* base58_encode_check: see bitcoin source code, https://github.com/bitcoin/bitcoin/blob/master/src/base58.h&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x0F&lt;br /&gt;
# SIN_Type = [0x01 | 0x02 | 0x11] -- See below for discussion of SIN types.&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master ECDSA public key (compressed)&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==Implementations==&lt;br /&gt;
&lt;br /&gt;
See&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SIN.js&lt;br /&gt;
https://github.com/gasteve/node-libcoin/blob/master/SINKey.js&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=40240</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=40240"/>
		<updated>2013-08-17T05:07:30Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* Creating a SIN */ prefix changes to 0x0f&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Fully decentralized, anonymous, secure identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Ownership may be digitally proven&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Disposable&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
* Third parties may offer digital attestions:&lt;br /&gt;
** Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
** Big Auction Provider, Inc. digitally signs a SIN as having a certain reputation score, on their website.&lt;br /&gt;
** Decentralized market users digitally sign one another&#039;s SINs, building a decentralized reputation&lt;br /&gt;
* Type-1 SINs:  have some creation cost, deterring spam.&lt;br /&gt;
* Type-1 SINs: Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
&lt;br /&gt;
tl;dr: A “master public key” generated by the user forms the root of digital trust.&lt;br /&gt;
&lt;br /&gt;
==Types of SINs==&lt;br /&gt;
&lt;br /&gt;
===Type 1 (persistent)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x01 (bitcoin main chain) or 0x11 (testnet)&lt;br /&gt;
&lt;br /&gt;
Type-1 SINs are intentionally scarce resources, much like bitcoins themselves.  All Type-1 SINs must conform to the sacrifice protocol described in this specification, to be considered valid.&lt;br /&gt;
&lt;br /&gt;
===Type 2 (ephemeral)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x02&lt;br /&gt;
&lt;br /&gt;
Type-2 SINs may be generated at any time, without network activity, much like bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
* MPK: Master Public Key.  ECDSA, using same curve as bitcoin.&lt;br /&gt;
* Hash160: ripemd160(sha256(data))&lt;br /&gt;
* base58_encode_check: see bitcoin source code, https://github.com/bitcoin/bitcoin/blob/master/src/base58.h&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x0F&lt;br /&gt;
# SIN_Type = [0x01 | 0x02 | 0x11] -- See below for discussion of SIN types.&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master ECDSA public key (compressed)&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=39754</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=39754"/>
		<updated>2013-07-23T17:21:40Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* Definitions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Fully decentralized, anonymous, secure identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Ownership may be digitally proven&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Disposable&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
* Third parties may offer digital attestions:&lt;br /&gt;
** Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
** Big Auction Provider, Inc. digitally signs a SIN as having a certain reputation score, on their website.&lt;br /&gt;
** Decentralized market users digitally sign one another&#039;s SINs, building a decentralized reputation&lt;br /&gt;
* Type-1 SINs:  have some creation cost, deterring spam.&lt;br /&gt;
* Type-1 SINs: Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
&lt;br /&gt;
tl;dr: A “master public key” generated by the user forms the root of digital trust.&lt;br /&gt;
&lt;br /&gt;
==Types of SINs==&lt;br /&gt;
&lt;br /&gt;
===Type 1 (persistent)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x01 (bitcoin main chain) or 0x11 (testnet)&lt;br /&gt;
&lt;br /&gt;
Type-1 SINs are intentionally scarce resources, much like bitcoins themselves.  All Type-1 SINs must conform to the sacrifice protocol described in this specification, to be considered valid.&lt;br /&gt;
&lt;br /&gt;
===Type 2 (ephemeral)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x02&lt;br /&gt;
&lt;br /&gt;
Type-2 SINs may be generated at any time, without network activity, much like bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
* MPK: Master Public Key.  ECDSA, using same curve as bitcoin.&lt;br /&gt;
* Hash160: ripemd160(sha256(data))&lt;br /&gt;
* base58_encode_check: see bitcoin source code, https://github.com/bitcoin/bitcoin/blob/master/src/base58.h&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x18&lt;br /&gt;
# SIN_Type = [0x01 | 0x02 | 0x11] -- See below for discussion of SIN types.&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master ECDSA public key (compressed)&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=39753</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=39753"/>
		<updated>2013-07-23T17:20:56Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: add definitions section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Fully decentralized, anonymous, secure identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Ownership may be digitally proven&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Disposable&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
* Third parties may offer digital attestions:&lt;br /&gt;
** Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
** Big Auction Provider, Inc. digitally signs a SIN as having a certain reputation score, on their website.&lt;br /&gt;
** Decentralized market users digitally sign one another&#039;s SINs, building a decentralized reputation&lt;br /&gt;
* Type-1 SINs:  have some creation cost, deterring spam.&lt;br /&gt;
* Type-1 SINs: Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
&lt;br /&gt;
tl;dr: A “master public key” generated by the user forms the root of digital trust.&lt;br /&gt;
&lt;br /&gt;
==Types of SINs==&lt;br /&gt;
&lt;br /&gt;
===Type 1 (persistent)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x01 (bitcoin main chain) or 0x11 (testnet)&lt;br /&gt;
&lt;br /&gt;
Type-1 SINs are intentionally scarce resources, much like bitcoins themselves.  All Type-1 SINs must conform to the sacrifice protocol described in this specification, to be considered valid.&lt;br /&gt;
&lt;br /&gt;
===Type 2 (ephemeral)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x02&lt;br /&gt;
&lt;br /&gt;
Type-2 SINs may be generated at any time, without network activity, much like bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
MPK: Master Public Key.  ECDSA, using same curve as bitcoin.&lt;br /&gt;
Hash160: ripemd160(sha256(data))&lt;br /&gt;
base58_encode_check: see bitcoin source code&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x18&lt;br /&gt;
# SIN_Type = [0x01 | 0x02 | 0x11] -- See below for discussion of SIN types.&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master ECDSA public key (compressed)&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=39629</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=39629"/>
		<updated>2013-07-17T15:13:56Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: Move down sacrifice section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Fully decentralized, anonymous, secure identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Ownership may be digitally proven&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Disposable&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
* Third parties may offer digital attestions:&lt;br /&gt;
** Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
** Big Auction Provider, Inc. digitally signs a SIN as having a certain reputation score, on their website.&lt;br /&gt;
** Decentralized market users digitally sign one another&#039;s SINs, building a decentralized reputation&lt;br /&gt;
* Type-1 SINs:  have some creation cost, deterring spam.&lt;br /&gt;
* Type-1 SINs: Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
&lt;br /&gt;
tl;dr: A “master public key” generated by the user forms the root of digital trust.&lt;br /&gt;
&lt;br /&gt;
==Types of SINs==&lt;br /&gt;
&lt;br /&gt;
===Type 1 (persistent)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x01 (bitcoin main chain) or 0x11 (testnet)&lt;br /&gt;
&lt;br /&gt;
Type-1 SINs are intentionally scarce resources, much like bitcoins themselves.  All Type-1 SINs must conform to the sacrifice protocol described in this specification, to be considered valid.&lt;br /&gt;
&lt;br /&gt;
===Type 2 (ephemeral)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x02&lt;br /&gt;
&lt;br /&gt;
Type-2 SINs may be generated at any time, without network activity, much like bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x18&lt;br /&gt;
# SIN_Type = [0x01 | 0x02 | 0x11] -- See below for discussion of SIN types.&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master ECDSA public key (compressed)&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=39562</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=39562"/>
		<updated>2013-07-15T02:46:43Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* Creating a SIN */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Fully decentralized, anonymous, secure identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Ownership may be digitally proven&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Disposable&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
* Third parties may offer digital attestions:&lt;br /&gt;
** Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
** Big Auction Provider, Inc. digitally signs a SIN as having a certain reputation score, on their website.&lt;br /&gt;
** Decentralized market users digitally sign one another&#039;s SINs, building a decentralized reputation&lt;br /&gt;
* Type-1 SINs:  have some creation cost, deterring spam.&lt;br /&gt;
* Type-1 SINs: Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
&lt;br /&gt;
tl;dr: A “master public key” generated by the user forms the root of digital trust.&lt;br /&gt;
&lt;br /&gt;
==Types of SINs==&lt;br /&gt;
&lt;br /&gt;
===Type 1 (persistent)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x01 (bitcoin main chain) or 0x11 (testnet)&lt;br /&gt;
&lt;br /&gt;
Type-1 SINs are intentionally scarce resources, much like bitcoins themselves.  All Type-1 SINs must conform to the sacrifice protocol described in this specification, to be considered valid.&lt;br /&gt;
&lt;br /&gt;
===Type 2 (ephemeral)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x02&lt;br /&gt;
&lt;br /&gt;
Type-2 SINs may be generated at any time, without network activity, much like bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master ECDSA public key (compressed)&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x18&lt;br /&gt;
# SIN_Type = [0x01 | 0x02 | 0x11] -- See below for discussion of SIN types.&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=39321</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=39321"/>
		<updated>2013-07-11T21:11:53Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* Types of SIN addresses */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Fully decentralized, anonymous, secure identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Ownership may be digitally proven&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Disposable&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
* Third parties may offer digital attestions:&lt;br /&gt;
** Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
** Big Auction Provider, Inc. digitally signs a SIN as having a certain reputation score, on their website.&lt;br /&gt;
** Decentralized market users digitally sign one another&#039;s SINs, building a decentralized reputation&lt;br /&gt;
* Type-1 SINs:  have some creation cost, deterring spam.&lt;br /&gt;
* Type-1 SINs: Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
&lt;br /&gt;
tl;dr: A “master public key” generated by the user forms the root of digital trust.&lt;br /&gt;
&lt;br /&gt;
==Types of SINs==&lt;br /&gt;
&lt;br /&gt;
===Type 1 (persistent)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x01 (bitcoin main chain) or 0x11 (testnet)&lt;br /&gt;
&lt;br /&gt;
Type-1 SINs are intentionally scarce resources, much like bitcoins themselves.  All Type-1 SINs must conform to the sacrifice protocol described in this specification, to be considered valid.&lt;br /&gt;
&lt;br /&gt;
===Type 2 (ephemeral)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x02&lt;br /&gt;
&lt;br /&gt;
Type-2 SINs may be generated at any time, without network activity, much like bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master ECDSA public key (compressed)&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x18&lt;br /&gt;
# SIN_Type = {0x01 | 0x02 | 0x11] -- See below for discussion of SIN types.&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=39320</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=39320"/>
		<updated>2013-07-11T21:11:32Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* Design goals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Fully decentralized, anonymous, secure identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Ownership may be digitally proven&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Disposable&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
* Third parties may offer digital attestions:&lt;br /&gt;
** Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
** Big Auction Provider, Inc. digitally signs a SIN as having a certain reputation score, on their website.&lt;br /&gt;
** Decentralized market users digitally sign one another&#039;s SINs, building a decentralized reputation&lt;br /&gt;
* Type-1 SINs:  have some creation cost, deterring spam.&lt;br /&gt;
* Type-1 SINs: Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
&lt;br /&gt;
tl;dr: A “master public key” generated by the user forms the root of digital trust.&lt;br /&gt;
&lt;br /&gt;
==Types of SIN addresses==&lt;br /&gt;
&lt;br /&gt;
===Type 1 (persistent)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x01 (bitcoin main chain) or 0x11 (testnet)&lt;br /&gt;
&lt;br /&gt;
Type-1 SINs are intentionally scarce resources, much like bitcoins themselves.  All Type-1 SINs must conform to the sacrifice protocol described in this specification, to be considered valid.&lt;br /&gt;
&lt;br /&gt;
===Type 2 (ephemeral)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x02&lt;br /&gt;
&lt;br /&gt;
Type-2 SINs may be generated at any time, without network activity, much like bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master ECDSA public key (compressed)&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x18&lt;br /&gt;
# SIN_Type = {0x01 | 0x02 | 0x11] -- See below for discussion of SIN types.&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=39319</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=39319"/>
		<updated>2013-07-11T21:10:16Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* Creating a SIN */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Fully decentralized, anonymous, secure identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Ownership may be digitally proven&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Disposable&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
* Third parties may offer digital attestions:&lt;br /&gt;
** Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
** Big Auction Provider, Inc. digitally signs a SIN as having a certain reputation score, on their website.&lt;br /&gt;
** Decentralized market users digitally sign one another&#039;s SINs, building a decentralized reputation&lt;br /&gt;
* Has some creation cost, deterring spam.&lt;br /&gt;
* Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
&lt;br /&gt;
tl;dr: A “master public key” generated by the user forms the root of digital trust.&lt;br /&gt;
&lt;br /&gt;
==Types of SIN addresses==&lt;br /&gt;
&lt;br /&gt;
===Type 1 (persistent)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x01 (bitcoin main chain) or 0x11 (testnet)&lt;br /&gt;
&lt;br /&gt;
Type-1 SINs are intentionally scarce resources, much like bitcoins themselves.  All Type-1 SINs must conform to the sacrifice protocol described in this specification, to be considered valid.&lt;br /&gt;
&lt;br /&gt;
===Type 2 (ephemeral)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x02&lt;br /&gt;
&lt;br /&gt;
Type-2 SINs may be generated at any time, without network activity, much like bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master ECDSA public key (compressed)&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x18&lt;br /&gt;
# SIN_Type = {0x01 | 0x02 | 0x11] -- See below for discussion of SIN types.&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=39318</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=39318"/>
		<updated>2013-07-11T21:10:04Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* Type 2 (ephemeral) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Fully decentralized, anonymous, secure identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Ownership may be digitally proven&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Disposable&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
* Third parties may offer digital attestions:&lt;br /&gt;
** Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
** Big Auction Provider, Inc. digitally signs a SIN as having a certain reputation score, on their website.&lt;br /&gt;
** Decentralized market users digitally sign one another&#039;s SINs, building a decentralized reputation&lt;br /&gt;
* Has some creation cost, deterring spam.&lt;br /&gt;
* Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
&lt;br /&gt;
tl;dr: A “master public key” generated by the user forms the root of digital trust.&lt;br /&gt;
&lt;br /&gt;
==Types of SIN addresses==&lt;br /&gt;
&lt;br /&gt;
===Type 1 (persistent)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x01 (bitcoin main chain) or 0x11 (testnet)&lt;br /&gt;
&lt;br /&gt;
Type-1 SINs are intentionally scarce resources, much like bitcoins themselves.  All Type-1 SINs must conform to the sacrifice protocol described in this specification, to be considered valid.&lt;br /&gt;
&lt;br /&gt;
===Type 2 (ephemeral)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x02&lt;br /&gt;
&lt;br /&gt;
Type-2 SINs may be generated at any time, without network activity, much like bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master ECDSA public key (compressed)&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x18&lt;br /&gt;
# SIN_Type = {0x01 | 0x02 | 0x11 | 0x12] -- See below for discussion of SIN types.&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=39317</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=39317"/>
		<updated>2013-07-11T21:08:44Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: Add sin type section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Fully decentralized, anonymous, secure identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Ownership may be digitally proven&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Disposable&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
* Third parties may offer digital attestions:&lt;br /&gt;
** Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
** Big Auction Provider, Inc. digitally signs a SIN as having a certain reputation score, on their website.&lt;br /&gt;
** Decentralized market users digitally sign one another&#039;s SINs, building a decentralized reputation&lt;br /&gt;
* Has some creation cost, deterring spam.&lt;br /&gt;
* Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
&lt;br /&gt;
tl;dr: A “master public key” generated by the user forms the root of digital trust.&lt;br /&gt;
&lt;br /&gt;
==Types of SIN addresses==&lt;br /&gt;
&lt;br /&gt;
===Type 1 (persistent)===&lt;br /&gt;
&lt;br /&gt;
SIN_Type 0x01 (bitcoin main chain) or 0x11 (testnet)&lt;br /&gt;
&lt;br /&gt;
Type-1 SINs are intentionally scarce resources, much like bitcoins themselves.  All Type-1 SINs must conform to the sacrifice protocol described in this specification, to be considered valid.&lt;br /&gt;
&lt;br /&gt;
===Type 2 (ephemeral)===&lt;br /&gt;
&lt;br /&gt;
Type-2 SINs may be generated at any time, without network activity, much like bitcoin addresses.&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master ECDSA public key (compressed)&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x18&lt;br /&gt;
# SIN_Type = {0x01 | 0x02 | 0x11 | 0x12] -- See below for discussion of SIN types.&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=39316</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=39316"/>
		<updated>2013-07-11T21:03:02Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* Creating a SIN */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Fully decentralized, anonymous, secure identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Ownership may be digitally proven&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Disposable&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
* Third parties may offer digital attestions:&lt;br /&gt;
** Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
** Big Auction Provider, Inc. digitally signs a SIN as having a certain reputation score, on their website.&lt;br /&gt;
** Decentralized market users digitally sign one another&#039;s SINs, building a decentralized reputation&lt;br /&gt;
* Has some creation cost, deterring spam.&lt;br /&gt;
* Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
&lt;br /&gt;
tl;dr: A “master public key” generated by the user forms the root of digital trust.&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master public key&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x18&lt;br /&gt;
# SIN_Type = {0x01 | 0x02 | 0x11 | 0x12] -- See below for discussion of SIN types.&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=39048</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=39048"/>
		<updated>2013-07-02T04:12:16Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* Design goals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Fully decentralized, anonymous, secure identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Ownership may be digitally proven&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Disposable&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
* Third parties may offer digital attestions:&lt;br /&gt;
** Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
** Big Auction Provider, Inc. digitally signs a SIN as having a certain reputation score, on their website.&lt;br /&gt;
** Decentralized market users digitally sign one another&#039;s SINs, building a decentralized reputation&lt;br /&gt;
* Has some creation cost, deterring spam.&lt;br /&gt;
* Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
&lt;br /&gt;
tl;dr: A “master public key” generated by the user forms the root of digital trust.&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master public key&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x18 (mainnet) or 0x19 (testnet)&lt;br /&gt;
# SIN_Version = 0x01, similar to how a [http://en.wikipedia.org/wiki/Universally_unique_identifier UUID&#039;s] form is dictated by a UUID&#039;s self-identified version&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=39047</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=39047"/>
		<updated>2013-07-02T04:11:49Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* Design goals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Fully decentralized, anonymous, secure identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Ownership may be digitally proven&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Disposable&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
* Third parties may offer digital attestions:&lt;br /&gt;
** Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
** Big Auction Provider, Inc. digitally signs a SIN as having a certain reputation score, on their website.&lt;br /&gt;
** Decentralized auction users digitally sign one another&#039;s SINs&lt;br /&gt;
* Has some creation cost, deterring spam.&lt;br /&gt;
* Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
&lt;br /&gt;
tl;dr: A “master public key” generated by the user forms the root of digital trust.&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master public key&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x18 (mainnet) or 0x19 (testnet)&lt;br /&gt;
# SIN_Version = 0x01, similar to how a [http://en.wikipedia.org/wiki/Universally_unique_identifier UUID&#039;s] form is dictated by a UUID&#039;s self-identified version&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=39037</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=39037"/>
		<updated>2013-07-01T15:00:44Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* Design goals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Fully decentralized, anonymous, secure identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Ownership may be digitally proven&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Disposable&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
* Third parties may offer digital attestions:  Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
* Has some creation cost, deterring spam.&lt;br /&gt;
* Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
&lt;br /&gt;
tl;dr: A “master public key” generated by the user forms the root of digital trust.&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master public key&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x18 (mainnet) or 0x19 (testnet)&lt;br /&gt;
# SIN_Version = 0x01, similar to how a [http://en.wikipedia.org/wiki/Universally_unique_identifier UUID&#039;s] form is dictated by a UUID&#039;s self-identified version&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=39036</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=39036"/>
		<updated>2013-07-01T14:18:19Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* Design goals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Fully decentralized, anonymous, secure identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Ownership may be digitally proven&lt;br /&gt;
* Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Disposable&lt;br /&gt;
* Third parties may offer digital attestions:  Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
* Has some creation cost, deterring spam.&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
&lt;br /&gt;
tl;dr: A “master public key” generated by the user forms the root of digital trust.&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master public key&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x18 (mainnet) or 0x19 (testnet)&lt;br /&gt;
# SIN_Version = 0x01, similar to how a [http://en.wikipedia.org/wiki/Universally_unique_identifier UUID&#039;s] form is dictated by a UUID&#039;s self-identified version&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=39008</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=39008"/>
		<updated>2013-06-28T14:05:56Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* Design goals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Fully decentralized, anonymous, secure identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Has some creation cost, deterring spam.&lt;br /&gt;
* Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Third parties may offer digital attestions:  Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master public key&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x18 (mainnet) or 0x19 (testnet3)&lt;br /&gt;
# SIN_Version = 0x01, similar to how a [http://en.wikipedia.org/wiki/Universally_unique_identifier UUID&#039;s] form is dictated by a UUID&#039;s self-identified version&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=39007</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=39007"/>
		<updated>2013-06-28T14:04:57Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* Creating a SIN */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Decentralized identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Has some creation cost, deterring spam.&lt;br /&gt;
* Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Third parties may offer digital attestions:  Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master public key&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x18 (mainnet) or 0x19 (testnet3)&lt;br /&gt;
# SIN_Version = 0x01, similar to how a [http://en.wikipedia.org/wiki/Universally_unique_identifier UUID&#039;s] form is dictated by a UUID&#039;s self-identified version&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate SIN for easier human reading&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=39003</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=39003"/>
		<updated>2013-06-28T06:01:26Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* Creating sacrifice transactions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Decentralized identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Has some creation cost, deterring spam.&lt;br /&gt;
* Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Third parties may offer digital attestions:  Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master public key&lt;br /&gt;
# BH = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = BH + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x18&lt;br /&gt;
# SIN_Version = 0x01, similar to how a [http://en.wikipedia.org/wiki/Universally_unique_identifier UUID&#039;s] form is dictated by a UUID&#039;s self-identified version&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate or space SIN for easier human reading&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=39002</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=39002"/>
		<updated>2013-06-28T06:00:25Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* Design goals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Decentralized identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Has some creation cost, deterring spam.&lt;br /&gt;
* Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Third parties may offer digital attestions:  Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
* All key-value pair updates digitally signed by SIN owner (key holder)&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master public key&lt;br /&gt;
# TM = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = TM + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x18&lt;br /&gt;
# SIN_Version = 0x01, similar to how a [http://en.wikipedia.org/wiki/Universally_unique_identifier UUID&#039;s] form is dictated by a UUID&#039;s self-identified version&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate or space SIN for easier human reading&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=39001</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=39001"/>
		<updated>2013-06-28T05:57:48Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* Design goals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Decentralized identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Has some creation cost, deterring spam.&lt;br /&gt;
* Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Third parties may offer digital attestions:  Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
* All data updates digitally signed by SIN owner (key holder)&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master public key&lt;br /&gt;
# TM = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = TM + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x18&lt;br /&gt;
# SIN_Version = 0x01, similar to how a [http://en.wikipedia.org/wiki/Universally_unique_identifier UUID&#039;s] form is dictated by a UUID&#039;s self-identified version&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate or space SIN for easier human reading&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=39000</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=39000"/>
		<updated>2013-06-28T05:54:44Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* Design goals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Decentralized identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Has some creation cost, deterring spam.&lt;br /&gt;
* Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Third parties may offer digital attestions:  Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
* Controlled by the SIN&#039;s owner (key holder) at all times.&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master public key&lt;br /&gt;
# TM = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = TM + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x18&lt;br /&gt;
# SIN_Version = 0x01, similar to how a [http://en.wikipedia.org/wiki/Universally_unique_identifier UUID&#039;s] form is dictated by a UUID&#039;s self-identified version&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate or space SIN for easier human reading&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=38999</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=38999"/>
		<updated>2013-06-28T05:54:32Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* Creating sacrifice transactions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Decentralized identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Has some creation cost&lt;br /&gt;
* Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Third parties may offer digital attestions:  Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
* Controlled by the SIN&#039;s owner (key holder) at all times.&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
Creation cost is attached to decentralized identity by means of sacrificing a small amount of value.&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master public key&lt;br /&gt;
# TM = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = TM + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x18&lt;br /&gt;
# SIN_Version = 0x01, similar to how a [http://en.wikipedia.org/wiki/Universally_unique_identifier UUID&#039;s] form is dictated by a UUID&#039;s self-identified version&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate or space SIN for easier human reading&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=38998</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=38998"/>
		<updated>2013-06-28T05:53:02Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* Future work */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Decentralized identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Has some creation cost&lt;br /&gt;
* Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Third parties may offer digital attestions:  Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
* Controlled by the SIN&#039;s owner (key holder) at all times.&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master public key&lt;br /&gt;
# TM = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = TM + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x18&lt;br /&gt;
# SIN_Version = 0x01, similar to how a [http://en.wikipedia.org/wiki/Universally_unique_identifier UUID&#039;s] form is dictated by a UUID&#039;s self-identified version&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate or space SIN for easier human reading&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;br /&gt;
&lt;br /&gt;
Key attributes of this system, like price and transaction size, are hardcoded.  It is presumed that version 2+ will improve upon this, once field experience is gained and lessons are learned.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=38996</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=38996"/>
		<updated>2013-06-28T05:50:55Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* Design goals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Decentralized identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Has some creation cost&lt;br /&gt;
* Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Third parties may offer digital attestions:  Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
* Controlled by the SIN&#039;s owner (key holder) at all times.&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master public key&lt;br /&gt;
# TM = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = TM + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x18&lt;br /&gt;
# SIN_Version = 0x01, similar to how a [http://en.wikipedia.org/wiki/Universally_unique_identifier UUID&#039;s] form is dictated by a UUID&#039;s self-identified version&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate or space SIN for easier human reading&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=38995</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=38995"/>
		<updated>2013-06-28T05:49:28Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* Future work */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Decentralized identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Has some creation cost&lt;br /&gt;
* Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Forms the basis of distributed reputation systems&lt;br /&gt;
* Third parties may offer digital attestions:  Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
* Controlled by the SIN&#039;s owner (key holder) at all times.&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master public key&lt;br /&gt;
# TM = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = TM + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x18&lt;br /&gt;
# SIN_Version = 0x01, similar to how a [http://en.wikipedia.org/wiki/Universally_unique_identifier UUID&#039;s] form is dictated by a UUID&#039;s self-identified version&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate or space SIN for easier human reading&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After creation, the root identity and key-value pairs must be stored $somewhere.&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=38994</id>
		<title>Identity protocol v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Identity_protocol_v1&amp;diff=38994"/>
		<updated>2013-06-28T05:47:41Z</updated>

		<summary type="html">&lt;p&gt;Jgarzik: /* Creating a SIN */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==Design goals==&lt;br /&gt;
&lt;br /&gt;
Decentralized identity.&lt;br /&gt;
&lt;br /&gt;
A SIN (&amp;quot;System Identification Number&amp;quot;) is the unique record identifier by which this identity will be known.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* Has some creation cost&lt;br /&gt;
* Sacrifice may be digitally proven, bootstrapping root of trust from blockchain data&lt;br /&gt;
* Start as anonymous; opt out of anonymity by attaching identifying key-value pairs (real.name = &amp;quot;John Smith&amp;quot;, gov.us.ssn = &amp;quot;123-45-6789&amp;quot;).&lt;br /&gt;
* Forms the basis of distributed reputation systems&lt;br /&gt;
* Third parties may offer digital attestions:  Identity Verification, Inc. digitally signs a SIN as passing their Not A Criminal/Level-1 check.&lt;br /&gt;
* Controlled by the SIN&#039;s owner (key holder) at all times.&lt;br /&gt;
&lt;br /&gt;
==Creating sacrifice transactions==&lt;br /&gt;
&lt;br /&gt;
An implementation of [https://en.bitcoin.it/wiki/Fidelity_bonds#Announce.2FCommit_Sacrifices Announce/Commit Sacrifices].  That author&#039;s feedback on this protocol was very helpful.&lt;br /&gt;
&lt;br /&gt;
# MPK = master public key&lt;br /&gt;
# TM = current block height&lt;br /&gt;
# Create and sign transaction T2. Broadcast if desired.&lt;br /&gt;
## must include Hash160(MPK) OP_TRUE anyone-can-spend output with value &amp;gt;= 0.001BTC&lt;br /&gt;
## nlocktime = TM + 144 blocks&lt;br /&gt;
## no more than 1000 bytes in size&lt;br /&gt;
# Create, sign and broadcast transaction T1&lt;br /&gt;
## must include OP_RETURN serialized(T2) output as last txout&lt;br /&gt;
&lt;br /&gt;
==Creating a SIN==&lt;br /&gt;
&lt;br /&gt;
# Prefix = 0x18&lt;br /&gt;
# SIN_Version = 0x01, similar to how a [http://en.wikipedia.org/wiki/Universally_unique_identifier UUID&#039;s] form is dictated by a UUID&#039;s self-identified version&lt;br /&gt;
# MD = Hash160(MPK)&lt;br /&gt;
# SIN = base58_encode_check( Prefix + SIN_Version + MD )&lt;br /&gt;
# Hyphenate or space SIN for easier human reading&lt;br /&gt;
&lt;br /&gt;
==Validating the root identity information==&lt;br /&gt;
&lt;br /&gt;
# B1 = block w/ T1&lt;br /&gt;
# B2 = block w/ T2&lt;br /&gt;
# Verify B2 height - 144 &amp;gt;= B1 height.&lt;br /&gt;
# Verify announced T2 is valid&lt;br /&gt;
# Verify mined T2 spends same inputs as announced T2 (not equal to account for [[Transaction Malleability]])&lt;br /&gt;
# Fail and waste sacrifice if not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus a minimal root record is MPK and is provably&lt;br /&gt;
* linked to the sacrifices&lt;br /&gt;
* MPK starts a new chain of digital signature trust, for further record updates&lt;br /&gt;
&lt;br /&gt;
==Future work==&lt;br /&gt;
&lt;br /&gt;
After that root identity is created, additional key-value pairs may be associated with the root record via updates verified by MPK, stored in an alt-blockchain or DHT somewhere.  That is outside the scope of this minimal document, at this time.&lt;/div&gt;</summary>
		<author><name>Jgarzik</name></author>
	</entry>
</feed>