Today we announce Author Identity Protocol with BitcoinFiles-SDK support
Today we are excited to announce Author Identity Protocol with BitcoinFiles-SDK support! There is an extensive list of usage and unit tests showing how to use the various protocol features.
Use Cases
- Prove ownership and authoring identity of any file
- Add multiple signatures to form agreements and contracts
- Decouple identity from funding addresses
Identity addresses are fully decoupled from the funding addresses which means we can upload files and pay the mining fees from any address and never requiring an on-chain payment from the Identity address.
This gives better security and privacy because the Identity address is only used to digitally sign and never needed for making payments.
For example, we can upload a blog post using Money Button to pay for the mining fees, yet never expose the Identity key with an on-chain payment.
The Author Identity Protocol specification uses Bitcom and the prefix for the protocol is 15PciHG22SNLQJXMoSUaWVi7WSqc7hCfva
BitcoinFiles-SDK support makes it easy to create, build and verify digital signatures on files:
Application and Usage Examples
Establish Stable Social Media Identities
With Author Identity the funding address is no longer used as the user identifier, this means your users can fund their transactions from any source and still maintain an identity they fully control.
OP_RETURN B ... | MAP ... | AUTHOR_IDENTITY
Example showing how the MAP (Magic Attribute Protocol) can be chained with Author Identity
Sign and Own Digital Content
Users can now upload content and digitally sign that they created the file. A user could choose to reveal their Identity with another on-chain transaction or remain pseudonymous until a later point in time.
bitcoinfiles.createFile({ file: { content: 'Hello world!', contentType: 'text/plain', }, pay: { key: privateKey }, signatures: [ { key: privateKey } ] });
See examples at: https://github.com/BitcoinFiles/AUTHOR_IDENTITY_PROTOCOL#usage-and-library-examples
Multiparty Contract and File Signatures
Multiple parties can sign the same B:// file to create an agreement and a witness that all parties signed. You can have as many layered signatures as you wish.
Using the Author Identity and BitcoinFiles-SDK you can reproduce the core functionality of DocuSign, HelloSign and other digital signing services in a few lines of code.
Simple provide multiple signatures in the array:
bitcoinfiles.createFile({ file: { content: 'Hello world!', contentType: 'text/plain', }, pay: { key: privateKey }, signatures: [ { key: 'first private key', }, { key: 'second private key' } ] });
Or you can first build the file before creating it and then broadcast it later:
var partialSignature = await bitcoinfiles.buildFile({ file: { content: 'Hello world!', contentType: 'text/plain', }, signatures: [ { key: 'first private key', } ] });
See examples at: https://github.com/BitcoinFiles/AUTHOR_IDENTITY_PROTOCOL#usage-and-library-examples
Arbitrary OP_RETURN Signing and Broadcasting with Datapay
You may want to inspect or pass on the processing to another service. You can call `bitcoinfiles.buildFile` and then pass off the OP_RETURN array to datapay for broadcasting:
https://github.com/BitcoinFiles/bitcoinfiles-sdk/blob/master/test/build.js#L439
See examples at: https://github.com/BitcoinFiles/AUTHOR_IDENTITY_PROTOCOL#usage-and-library-examples
Conclusion
We are excited to share with the world Author Identity Protocol and we look forward to hearing your feedback and suggestions. Most of all we look forward to seeing what you all build!
Special thanks to Monkeylord and Unwriter for feedback and ideas.