dominik / stellar-federation
Stellar 的联盟服务器,用于在任意两种货币之间发送和接收资金的去中心化协议。
Requires
- ext-mbstring: *
- sabre/http: ~2.0.4
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 客户端告知您的联盟服务器位于以下这些位置之一
- https://stellar.example.org/stellar.txt
- https://example.org/stellar.txt
- https://www.example.org/stellar.txt
别忘了将 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
的钱包地址。