区块链允许数据提供者和消费者直接在一个开放的系统中处理信息,而不是订阅世界各地的几十个中心化服务并编写他们的软件来与每个API进行通信。阅读此区块链API教程,了解如何根据您的特定需求使用它。API(应用程序编程接口)是对单个计算机程序可用于与另一个程序交互的方法(类、过程、函数、结构或常量)的描述。它通常包含在任何Internet协议(例如RFC)、软件框架或对操作系统功能的标准调用的描述中。它通常由单独的软件库或操作系统服务来实现。开发人员通常使用区块链API来编写各种应用程序。API定义程序(模块、库)提供的功能,并允许对该功能的实现方式进行抽象。软件组件通过API相互交互。在这种情况下,组件通常形成一个层次结构:高层组件使用低层组件的API,低层组件又使用更底层组件的API。互联网上的数据传输协议就是建立在这个原则之上的。标准协议栈(OSI网络模型)由7层组成(从物理位传输层到应用协议层,类似于HTTP和IMAP协议)。每个级别都使用前一个底层数据传输级别的功能,并为下一个级别的覆盖提供必要的功能。注:协议的概念类似于API的概念。两者都是功能的抽象,只是协议处理数据传输,而API则关注应用程序的交互。区块链API多样性区块链软件的开发往往包括各种困难的部分。其中最重要的是创建区块链API接口。有些项目通过提供以下API服务来帮助用户和开发人员:网站接收比特币付款的极其简单的方式。此服务是完全安全的,非常适合企业或个人使用:区块链链接的钱包服务。用于从区块链钱包发送和接收付款的API。每个块和事务的数据请求的JSON。用于请求的简单区块链API:用于查询区块链数据的文本格式的简单API。Web套接字:具有低延迟的流式套接字,可为新块和交易提供数据。让我们从BlockchainWalletAPI回顾开始。BlockchainWalletAPI提供了一个简单的接口。要使用此API,您需要启动一个负责管理钱包的小型本地服务。您的应用程序通过HTTPAPI调用在本地与此服务交互。现在,您可以从新的区块链钱包API转移比特币。所有交易价值0.0001BTC矿工费。下面是它在PHP中的样子:";$addressb="1ExD2je6UNxL5oSu6iPUhn9Ta7UrN8bjBy";$recipients=urlencode('{"'.$addressa.'":'.$amounta.',"'.$addressb.'":'.$amountb.'}');$json_url="http://localhost:3000/merchant/$guid/sendmany?password=$firstpassword&second_password=$secondpassword&recipients=$recipients";$json_data=file_get_contents($json_url);$json_feed=json_decode($json_data);$message=$json_feed->message;$txid=$json_feed->tx_hash;?>WebSocketAPI允许开发人员获取有关新交易和区块的实时数据。从URL链接wss://ws.blockchain.info/inv开始。部署套接字时,用户通过发送操作消息{"op":"ping"}来订阅频道。然后,订阅有关所有新比特币交易的通知{"op":"unconfirmed_sub"}。最后订阅地址{"op":"addr_sub","addr":"$bitcoin_address"}。有关新交易的通知如下所示:"op":"utx","x":{"lock_time":0,"ver":1,"size":192,"inputs":[{"sequence":4294967295“prev_out”:{“spent”:true,“tx_index”:99005468,“type”:0,“addr”:“1BwGf3z7n2fHk6NoVJNkV32qwyAYsMhkWf”,“value”:65574000,“n”:0,“script”:“76a91477f4c9ee75e449a74fbc38c251a45"},"script":"483045022100e4ff962c292705f051c2c2fc519fa775a4d8955bce1a3e29884b2785277999ed02200b537ebd22a9f25fbbbcc9113c69c1389400703ef2017d80959ef0f1d685756c012102618e08e0c8fd4c5fe539184a30fe35a2f5fccf7ad62054cad29360d??871f8187d"}],"time":1440086763,"tx_index":99006637,"vin_sz":1,"hash":"0857b9de1884eec314ecf67c040a2657b8e083e1f95e31d0b5ba3d328841fc7f","vout_sz":1,"relayed_by":"127.0.0.1","out":[{"spent":false,"tx_index":99006637,"type":0,"addr":"1A828tTnkVFJfSvLCqF42ohZ51ksS3jJgX","value":65564000,"n":0,"script":"76a914640cfdf7b79d94d1c98013b8de603537"对于区块链数据API,如果在GET请求中加上&cors=true参数,就可以使用CORS进行一些数据API调用CORS(Cross-OriginResourceSharing)是现代浏览器的一种技术,提供对另一个域资源的访问页。直到最近,克服同源策略对XSS请求的限制的主要方法是使用JSONP。JSONP本身有一个致命的局限性:它只能通过GET方式接收数据。通过POST方法发送数据仍然无法访问。该技术本身非常简单。有三个域希望从服务器下载资源。为了实现这一点,为内容提供服务的Web服务器在响应标头中指示受信任域列表Access-Control-Allow-Origin:A、B、C就足够了。那么请求页面的同源策略限制将不适用于来自这些域的页面。要发起跨域请求,客户端浏览器会将原始请求添加到HTTP请求(发出请求的站点的域)中。例如,页面http://www.a.com/page.html试图从页面http://www.b.com/cors.txt获取数据。在区块链数据API中,单个块如下所示:"hash":"0000000000000bae09a7a393a8acded75aa67e46cb81f7acaa5ad94f9eacd103","ver":1,"prev_block":"00000000000007d0f98d9edca880a6c124e25095712df8952e0439ac7409738a","mrkl_root":"935aa0ed2e29a4b81e0c995c39e06995ecce7ddbebb26ed32d550a72e8200bf5","time":1322131230,"bits":437129626,"nonce":2964215930,"n_tx":22,"size":9195,"block_index":818044,"main_chain":true,"height":154595,"received_time":1322131301,"relayed_by":"108.60.208.156","tx":[--ArrayofTransactions--]TheBlockchainChartsandStatisticsAPIallowsinteractionwiththechartsandstatisticsdisplayedonblockchain.info.(BlockchainInformationAPI).可以使用图表API方法接收关于blockchain.info图表的信息:"status":"ok","name":"ConfirmedTransactionsPerDay","unit":"Transactions","period":"day","description":"ThenumberofdailyconfirmedBitcointransactions.","values":[{"x":1442534400,//Unixtimestamp(2015-09-18T00:00:00+00:00)"y":188330.0},...StatsAPI可以是用于接收有关blockchain.info统计统计:“market_price_usd”:610.036975,“hash_rate”:1.8410989266292908E9,“total_fees_btc”:total_fees_btc“:6073543165minutes_between_blocks":8.2577,"totalbc":1587622500000000,"n_blocks_total":430098,"estimated_transaction_volume_usd":1.2342976868108143E8,"blocks_size":117490685,"miners_revenue_usd":1287626.6577490852,"nextretarget":431423,"difficulty":225832872179,"estimated_btc_sent":20233161880242,"miners_revenue_btc":2110,"total_btc_sent":184646388663542,"trade_volume_btc":21597.09997288,"trade_volume_usd":1.3175029536228297E7,"timestamp":1474035340000比特币API接受比特币支付变得在越来越受欢迎和需求的网站上,有很多方法可以接受比特币支付。最方便的方法之一是区块链API。在这里,您不需要绑定到特定的语言或SDK;您甚至不需要需要在那里注册。只需要有一个钱包来接受比特币和时间将一个相当简单的API连接到您的系统。此外,客户不会看到您的钱包,而是交易所的临时钱包。在直接在说代码之前(例子中我们会用到PHP,但是用Java、Python等也可以很容易实现),有必要明确一下支付接受机制本身,整个过程遵循以下顺序:1.用户从区块链Tempora发送一系列数据需要ry钱包。2.区块链返回其临时钱包以接收支付给用户。3.用户向客户展示这个钱包,以及一小部分关于如何使用它的说明。4.客户支付(转入钱包)5.用户在比特币系统中等待支付验证。6.如果区块链系统验证成功,将在用户站点调用脚本(用户必须指定是哪个),并传输所有交易数据。7.之后,付款在用户系统内得到安全确认。要获得临时钱包,您应该发送一系列数据:成功确认交易后将转录的脚本的URL。值得注意的是,建议指定某个参数(甚至是部分参数),以便在当前系统中识别付款。只需在用户系统中指定客户ID并将任何数据输入数据库,但前提是收到确认的交易。但是,官方文档建议使用预先创建的付款号码和任何验证短语。一般情况下,我们通过常规的GET传输请求中的一个参数来获取URL。对于区块链系统,此参数称为回调。该值应编码为URL链接。用户钱包用于接收付款。区块链会将收到的钱转移到这个钱包。这些参数称为地址。最后一个参数称为方法,用于创建临时钱包。这个数据会被发送到区块链脚本(https://blockchain.info/api/receive),每个参数都是一个常用的GET参数。其执行结果由用户系统处理(结果将采用JSON格式)。关于BlockchainInfoAPI的所有内容都在BlockchainAPI文档中进行了解释。现在用户已准备好接受对钱包的付款,但无法注册他从系统收到的事实。用户应该记住,在真实的系统中,建议使用经过深思熟虑和编写良好的代码,以及一个数据库来存储准备好的付款(存储付款号码,系统中的用户ID和身份验证短语或其成分)。此外,验证付款的时间可能会有所不同并且非常重要,而且比特币汇率可能会发生变化。用户有两种选择:支付时保留汇率,或在收到交易确认后要求汇率。交易确认收据文件名为receive_payment.php,存放在网站根目录下;用户在请求临时钱包时创建$callback_url时指定了其名称。事实上,同一个支付的脚本不会只被调用一次,而是根据它在各个节点上的确认次数来调用。这意味着用户必须首先检查确认。区块链提供了很多参数:Transaction_hash,唯一的交易哈希。Input_transaction_hash,原始交易的唯一哈希值。Input_address,接收付款的区块链钱包。Destination_address,付款将发送到的用户钱包。Confirmations,节点确认的次数(如果该参数的值大于等于6,建议接受支付确认)。value参数生成中本聪的值,而不是比特币(1Satoshi=0.00000001BTC)。因此,所得价值应减少为比特币。名为invoice_id和secret的参数由用户在接收区块链钱包阶段设置。所以他们可能多也可能少,他们可以有任何名字。建议在支付历史中以比特币形式存储收到的值;但是,它应该转换为另一种货币(例如USD)以供用户系统使用。如果系统仅适用于比特币,则无需转换任何东西。有一个单独的汇率API文档用于将比特币转换为其他货币。用户必须指定两个参数:货币名称(文档中提供了货币列表,用户也可以使用调用Print_r($Exchange_data_obj)获取它。用户想要兑换的比特币数量。区块链开发平台和API今天,有许多公司开发提供应用程序开发工具的平台和项目。Blockchain.info有许多区块链信息API用于他们的电子钱包服务(这是最大的之一),旨在发送和接收付款并执行其他操作。该链创建一个接口,用于访问分布式记录注册表的完整节点中包含的数据,以及标准信息请求:例如,关于您的比特币余额。此外,您可以对特定地址执行操作。发送通知。Stellar是一个半去中心化的(由网关组织提供服务,而不是矿工),可公开访问的日志和统一的开发环境(blockchainAPI,多重签名API)绑定到Stripe支付网络。另外其他公司也有多边签名的区块链钱包API,比如Block.io、Gem、BlockCypher等,未来需要一个更加统一的区块链API开发环境,包括区块链生态系统的各种变化组件(存储,文件维护、钱包交互、移动支付、身份验证和声誉)。智能合约将使我们能够创建一个全球气象数据市场,消费者可以在其中请求实时数据并以通用格式接收(使用区域区块链信息API)。集中式数据提供商可以告别他们自己的格式和销售活动,而是将数据提供给全球可访问的天气市场dApp。可以将区块链的开发环境与其他大型网段链接起来:例如、用于机器对机器(M2M)通信的基础设施和用于快速应用程序开发的物联网网络。在遥远的未来,这种高级集成应用程序的一个例子可能是智能城市基础设施中的交通传感器Smartwatches交互以自动预留和使用比特币中的智能合约支付流量。API操作系统和多样性问题几乎每个操作系统(UNIX、Windows、OSX等)都有一个API,程序员可以使用API??为该操作系统创建应用程序。操作系统的主要API是一组系统调用。应该注意的是,开发人员通常有几个不同的API来实现相同的结果。而且,每个API通常使用较低级别的抽象API程序组件来实现。例如:为了在浏览器中看到“Hello,world!”这一行,您只需要创建一个HTML文档,其中包含一个最小的标题和一个包含给定行的最小主体。当浏览器打开这个文档时,浏览器程序会将文件名(或打开的文件描述符)传递给处理HTML文档的库,库文件会使用操作系统API系统读取这个文件,然后通过“清除窗口”类型的标准图形/基本操作API库调用它。写“你好,世界!”以您选择的字体。在这些操作过程中,图元库会根据相应的请求访问窗口界面库。该库已经联系操作系统API以将数据写入视频卡缓冲区。同时,实际上几乎每个级别都有几个可能的替代API。例如,我们可以用LaTeX编写源文档,而不是用HTML编写。我们可以使用任何浏览器进行显示。通常,不同的浏览器使用不同的HTML库,所有这些都可以使用不同的本机库和在不同的操作系统上编译。因此,现有的多级API系统的主要困难是:将软件代码从一个API系统移植到另一个API系统的复杂性(例如,在更改操作系统时)。从较低级别移动到较高级别时功能丧失。粗略地说,创建每个API“层”是为了促进执行某些标准操作集。但与此同时,它确实很难,或者根本不可能执行较低API级别提供的其他操作。从一个API迁移到另一个API时移植程序代码的难度。这些问题经常在将模块转移到其他操作系统时出现。从低级管理到高级管理时,减少接口功能的范围。在这种情况下,有助于执行严格定义的任务类别。同时,失去了对其他监管机构访问的控制权。毕竟,较低级别允许您轻松管理程序的基本组件。软件接口的分类与通过它们控制的应用程序的目的和功能密切相关。事实上,在运行复杂的系统时,往往还有其他的API以其他方式解决同样的问题。分配单独的组来管理软件模块(wxWidgets、Qt、GTK等)、操作系统(AmigaROM内核、Cocoa、Linux内核API、OS/2API、POSIX、WindowsAPI)、声音(DirectMusic/)接口DirectSound,OpenAL),窗口界面等。它们的分离取决于层次结构和功能中应用程序的程度。电脑游戏的用户通常不会怀疑这个图形API为他们提供了如此快速的画面绘制和惊人的图像亮度。全球区块链API通常包括个别编程语言的接口。在他们的帮助下,您可以管理非常具体和本地的任务解决方案。这完全取决于具体算法的实现。结论区块链提出了大量极其重要的问题。它的使用具有广泛的优势:拒绝第三方、保护交易、安全交易、资源共享、保证交易、自动执行合约等。让我们从一个角度来看这个技术:一个区块链可以包含多个API,包括一个简单的区块链API,一个区块链信息API,一个区块链钱包API,一个交易脚本语言,一个P2P节点通信API,以及一个用于检查网络中交易的ClientAPI。应用程序编程接口(API)现在包含在受密码保护的公共基础设施(区块链)中。区块链被用作一种新形式的数据库:例如,作为永久存储不可变加密区块链API密钥(或哈希值)的分布式哈希表(DHT),与大量存储的数据链相关联。一种新型浏览器将允许用户运行去中心化应用程序(Dapps),而不仅仅是网页(例如,以太坊中的Mist)。它还可以解决许多更棘手的问题。其中之一是集中化。区块链技术在应用集中式和分散式模型的未来世界中可能非常有用。它不仅破坏了现有的刻板印象和方案,而且还有助于开发结合旧方法和创新方法的大型生态系统。
