dominik/stellar-federation

Stellar 的联盟服务器,用于在任意两种货币之间发送和接收资金的去中心化协议。

dev-master 2014-08-11 07:05 UTC

This package is auto-updated.

Last update: 2024-09-05 19:45:08 UTC


README

进行中。使用时请自担风险。

此服务器为您的域名提供 Stellar 联盟服务。

Stellar 是一种去中心化协议,可用于任意两种货币之间的发送和接收资金。

Stellar 的 联盟协议 使您能够为您的域名设置联盟地址。这意味着,如果您控制 example.org 域名,您可以在例如 user@example.org 下接收付款。如果您想了解更多关于 Stellar 联盟的信息,请查看这篇 博客文章

设置联盟

每当 Stellar 客户端试图向 user@example.org 发送付款时,它会尝试从您的服务器上的三个不同 URL 请求一个名为 stellar.txt 的文件(更多关于 stellar.txt 的信息见下文)。此文件告诉客户端如何连接到联盟服务器。一旦客户端知道了联盟服务器的 URL,它就会向联盟服务器请求用户的钱包地址。

提供 stellar.txt 文件的服务器以及您的联盟服务器都需要一个有效的 SSL 证书。

联盟服务器

获取并运行联盟服务器最快、最简单的方法是初始化一个新的 git 仓库,通过 composer 将 dominik/stellar-federation 作为依赖项,创建一个新的 Heroku 应用程序并将其推送到那里。当使用 Heroku 时,它已经在 Procfile 中处理了 web 服务器配置 - 如果您使用其他工具,您需要自己配置 web 服务器。对于 Heroku,您需要在您的机器上安装它们的命令行工具(在 Mac 上可以通过 brew install heroku-toolbelt 安装)。如果您没有在您的机器上安装 composer,请参阅 composer 网站 上的说明。

现在是时候设置您的项目了

  • 在您的机器上的某个位置使用 git init 创建一个新的 git 仓库
  • 运行 composer init 来初始化您的项目
    • 您应该将 minimum-stability 设置为 dev
    • 当被询问依赖项时,输入 dominik/stellar-federation 并将版本约束设置为 dev-master
    • 您还需要 mbstring 扩展,所以请确保将 ext-mbstring* 作为版本约束一起要求
  • 然后运行 composer install 以拉取依赖项

接下来,您需要配置您的联盟服务器

  • 在您的项目中创建一个名为 public/ 的目录。
    • 将示例服务器复制到目录 cp vendor/dominik/stellar-federation/example/server.php public/index.php
    • 根据需要配置 public/index.php,包括您想为哪些域名和用户提供联盟服务
  • 将 Heroku Procfile 复制到项目的根目录 cp vendor/dominik/stellar-federation/example/Procfile .

部署到 Heroku(或其他地方)

  • 使用 git add . 将所有内容添加到 git
  • 提交您的更改 git commit -m "Initial commit"
  • 创建一个新的 Heroku 应用程序 heroku apps:create
  • 推送到 Heroku git push heroku master

无论何时你想更新,只需在你的项目中运行 composer update,提交更新的 composer.lock 并重新部署。

配置 stellar.txt

最后一步是将 stellar.txt 文件放置到正确的位置,以便向 Stellar 客户端告知您的联盟服务器位于以下这些位置之一

别忘了将 stellar.txt 中的 URL 调整到您联盟服务器的实际位置。

[federation_url]
https://example.herokuapp.com

用法

如果您一切操作正确,现在应该能够像这样查询您的联盟服务器

curl -i 'https://example.herokuapp.com?type=federation&user=user&domain=example.org'

HTTP/1.1 200 OK
Connection: keep-alive
Content-Type: application/json
Access-Control-Allow-Origin: *

{
    "result": "success",
    "federation_json": {
        "type": "federation_record",
        "domain": "example.org",
        "user": "user",
        "destination_address": "gDnu3fdGNNAuUy84DmbfyxwELjfu8kpmHg"
    }
}

当有人现在尝试向 user@example.org 发起支付时,客户端将首先尝试找到您的 stellar.txt 以确定您的域名联盟服务器运行的位置,然后向您的联盟服务器请求 user@example.org 的钱包地址。