Bitcoin is an interesting technology because it showed up after the web and mobile consumer technologies had already spread to most of the planet.<p>These days it takes literally hours to put up a web application that would have taken many months to build in the early nineties, if not more!<p>There still isn&#x27;t an existing technology stack to build these kinds of consumer friendly applications that take advantage of the properties of a decentralized, single-source of truth, public access database like the Bitcoin blockchain.<p>That means that everyone is having to first figure out what the technology stack is, where the interfaces are for the various systems and modules that comprise it, and the best practices for shipping working products.<p>We&#x27;ve been trying our best to publish what we&#x27;ve been learning and trying to find nice interfaces for our systems and modules, and in the process we&#x27;ve come up with Common Blockchain, an API interface for querying the blockchain and propagating transactions, and Common Wallet, an API interface for signing messages, signing transactions, and signing authentication tokens.<p><a href="https:&#x2F;&#x2F;github.com&#x2F;blockai&#x2F;abstract-common-blockchain" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;blockai&#x2F;abstract-common-blockchain</a> <a href="https:&#x2F;&#x2F;github.com&#x2F;blockai&#x2F;abstract-common-wallet" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;blockai&#x2F;abstract-common-wallet</a><p>We&#x27;ve got a really simple implementation of a Common Wallet based on bitcoinjs-lib that does all the basics that we use mainly for automated test suites, but it is a fully functional Bitcoin wallet.<p><a href="https:&#x2F;&#x2F;github.com&#x2F;blockai&#x2F;test-common-wallet" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;blockai&#x2F;test-common-wallet</a><p>We&#x27;ve also got a Common Wallet interface that talks to the Bitcoin-QT or bitcoind JSON-RPC, meaning you can use the standard core wallet with all of our supporting protocols. There&#x27;s also a Common Blockchain implementation for the JSON-RPC.<p><a href="https:&#x2F;&#x2F;github.com&#x2F;blockai&#x2F;rpc-common-blockchain" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;blockai&#x2F;rpc-common-blockchain</a> <a href="https:&#x2F;&#x2F;github.com&#x2F;blockai&#x2F;rpc-common-wallet" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;blockai&#x2F;rpc-common-wallet</a><p>And there&#x27;s a number of unofficial Common Blockchain wrapper for third-party blockchain APIs like Blockcypher, Chain, and Blockchain.info. We now use a Common Blockchain interface based on Blockcypher in production.<p>The main motivation for Common Blockchain was that we were tired of having to change our interface after a series of blockchain APIs we were using either went out of business or pivoted.