Today, Satchmo and I are pleased to announce Author Identity Protocol with BitcoinFiles-SDK and MAP (Magic Attribute Protocol) support!
For developers, check out the extensive list of usage and unit tests showing how to use the various protocol features.

Use Cases

  • Prove ownership and authoring identity of any B:// Bitcoin Data 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.
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:

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', } ] });

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:


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.



7 of 7 reviewers say it's worth paying for

0 of 7 reviewers say it's not worth paying for
  earned 0.0¢
I am no coder, all the code is mumbo jumbo to me, but I know that, if you build, they will come :-) Good job guys.
   5mo ago
  earned 25.0¢
I've made a quick prototype extension for adding Author Identity to money button op_return.
A prototype site to view the linked memos can be viewed from<address> and is my test address. The site's source code is at
   5mo ago
  earned 0.0¢
By using the extension and site like , you get a cheap twitter / blog writer on bsv chain.
To view the linked content, visit like url.
   5mo ago
  earned 0.0¢
@zhangweis2 That's awesome work! We made a patch to AUTH_ID this week to simplify (remove Field Offset and Field Count) We've updated the libraries, can you please update and try it?
   5mo ago
  earned 0.0¢
@Attila I've updated the code to reflect the protocol change. Thanks for the update.
   5mo ago