备注:下文只做简单的翻译,没有做校验
书信教程
在本教程中,您将学习Interledger的一些基本概念以及使ILP成为可应用于任何支付网络的协议的一些标准。
在教程中,我们将运行一个非常基本的在线服务,销售...信件,并写一个客户来支付他们。
每次您访问该网站时,您都会收到一封来自A - Z的随机信件。但是,如果您没有支付费用,则会提示您先付款,并且只能在收到您的信后才能收到您的信件。
为了使我们的信得到付款,我们还将实施一个简单的客户来付款。
本教程使用XRP Testnet作为基础支付网络,但如果存在工作分类帐插件,则可以使用任何支付网络。查看GitHub上正在开发的现有插件。
开始之前你需要什么:
- 一台带互联网连接的电脑
- 安装了NodeJS版本7或更高版本
- 命令行终端的基本知识
- 基本的JavaScript知识
- (可选)安装了git
你会学到什么:
- 关于有条件支付和散列时间锁定协议
- 关于ILP地址
- 关于Ledger插件接口(LPI)以及如何配置和使用插件
- 如何构建一个接受Interledger支付的服务
- 如何构建发送Interledger付款的基本付款客户端
- (奖金)如何构建一个客户端代理,根据需要自动支付请求
注意:在执行本教程时,有时会按照说明操作导致出现错误。这可能是故意的。请继续阅读以了解错误存在的原因以及如何解决该错误。
背景
为了说明基本的ILP概念,我们将建立一个简单的在线服务,销售字母表中的字母并通过ILP接受付款。我们没有将这个想法申请专利,所以如果你部署这个并成为即时的百万富翁,请大度慷慨。
要做到这一点,我们需要一个由商店运行的服务器,还有一个由客户运行的客户端。
服务器
服务器将执行两个功能:
- 它将托管一个HTTP服务,客户可以根据每个请求获取一个新的随机字母。
- 它将监听与即将购买的信件相关的即将到来的ILP付款,完成这些付款以接受付款,并向付款人提供可用来索取信件的代币。
一旦我们完成了教程,服务器将执行以下步骤:
- 连接到一个帐户并监控它收到的付款
- 启动Web服务器以接受信件请求
- 处理请求,存储结果,并向客户提供如何为请求付款和获得结果的详细信息
- 处理与先前请求相关的收款,并向付款人提供使用付款证明令牌再次执行请求所需的数据
- 处理包含验证付款标记的请求,并返回最初生成的结果
客户
客户将执行ILP付款并输出退回的履行。这可以兑换成原始请求中要求的信件。
一旦我们完成了教程,客户端将执行以下步骤:
- 连接到从中发送付款的帐户
- 使用原信件请求回复中提供的地址,金额和条件开始付款
- 完成付款并返回付款证明标记以及如何使用它来完成原始请求的说明
第1步:获取代码
本教程的代码有两种形式:
- 如果你遵循这个教程,你将会从一些非常基本的代码开始,并且会在我们去的时候充实它。
- 如果您希望从完成的代码开始,并简单地通过步骤,那么您也可以这样做。
首先让我们得到所有的代码,或者使用Git或者直接下载并解压缩它。
混帐
git clone https://github.com/interledger/tutorials
下载
假设您已经克隆了存储库,或者解压缩了下载,请在项目的根目录下打开一个终端窗口并切换到letter-shop
目录。
您应该看到以下文件:
README.md
completed/
index.md
package-lock.json
package.json
pay.js
plugins.js
proxy.js
shop.js
大多数这些文件只是脚手架,等着你完成我们去。如果您想要完整的文件,以便您可以继续,请切换到complete
子目录。
第2步:运行服务器
我们需要做的第一件事是安装我们的依赖关系并启动我们的商店服务器。
我们使用npm进行安装(这可能需要几分钟时间来下载所有依赖项):
npm install
如果您在此处遇到错误,请确保已
node
安装。
然后我们尝试并启动我们的商店服务器:
node shop.js
但是,我们遇到了麻烦......请继续阅读。
Interledger插件
我们的商店以及我们将在本教程中构建的许多其他组件使用分类帐插件。插件是与特定分类帐上的特定帐户进行对话的一段代码。
由于Interledger将潜在的截然不同的分类账连接在一起,我们需要一个抽象层来隐藏分类账的细节,但是暴露了通过分类账发送和接收资金所需的接口。这是Interledger插件的用途。
Ledger插件公开了一个通用接口(Ledger插件接口),因此无论您的应用程序连接到哪个分类帐,它发送和接收付款的方式都是相同的。
注意:在我们阅读本教程时,我们将使用Ledger插件接口的不同功能。您可以在IL-RFC 0004草案8中找到参考文档。
我们已将所有插件配置放入一个名为的文件中plugins.js
。我们使用的默认插件是XRP Escrow插件,它允许我们连接到XRP Testnet Ledger。
的XRP中介插件是围绕一个包装RippleLib,并暴露总帐插件接口(LPI)。在代码中,您会看到'ilp-plugin-xrp-escrow'插件正在配置秘密,帐户,服务器和前缀。前三个值来自XRP Testnet龙头。
在您最喜爱的文本编辑器中编辑此文件,并按照代码注释中的说明操作:
- 为商店和客户获取不同的XRP Testnet凭证。
- 使用这些新凭证配置XRP分类帐插件
重要提示:即使您使用的是完整的教程代码,您也需要对其进行设置,以便您使用自己的测试帐户。
现在尝试再次运行您的服务器。
$ node shop.js
你应该看到像这样的东西:
== Starting the shop server ==
在里面shop.js
你会看到我们有一个你配置的分类账插件的实例plugins.js
:
const plugin = require('./plugins.js').xrp.Shop()
现在我们需要用这个插件做点什么。将文字替换// Do something...
为以下内容:
console.log(` 1. Connecting to an account to accept payments...`)
plugin.connect().then(function () {
// Get ledger and account information from the plugin
const ledgerInfo = plugin.getInfo()
const account = plugin.getAccount()
console.log(` - Connected to ledger: ${
ledgerInfo.prefix}`)
console.log(` -- Account: ${
account}`)
console.log(` -- Currency: ${
ledgerInfo.currencyCode}`)
console.log(` -- CurrencyScale: ${
ledgerInfo.currencyScale}`)
// Convert our cost (10) into the right format given the ledger scale
const