edwardongmyeg / stellar-api
Stellar网络的API客户端
Requires
- christian-riesen/base32: ^1.3
- guzzlehttp/guzzle: ^7.0.1
- paragonie/sodium_compat: ^1.0
- phpseclib/phpseclib: ^3.0.0
- symfony/filesystem: ^4.1
Requires (Dev)
- phpunit/phpunit: ^9.3.3
This package is auto-updated.
Last update: 2024-09-19 08:29:11 UTC
README
为了与Laravel 9兼容的更新(持续进行)。这是一个从Zulucrypto/stellar-api分叉的仓库。欢迎提交Pull Request!
PHP库,用于与Stellar网络交互。
- 与Horizon服务器通信
- 构建和签名事务
⚠️ 危险区域 ⚠️
开发状态
此库正在积极开发中,应被视为Beta质量。请确保您已经在测试网络上进行了充分测试,并在代码的其他地方添加了健全性检查。
大整数支持
在64位平台上,最大的PHP整数是64位。当处理大额转账时,这一点尤其重要。单个XLM(1 XLM)的本地表示为10000000 stroops。
因此,如果您尝试使用MAX_INT数量的XLM(或自定义资产),在将值转换为stroops并发送到网络时,可能会超出PHP整数类型的范围。
此库尝试为此场景添加检查,并使用BigInteger类来解决这个问题。
如果您应用程序使用大量XLM或自定义资产,请对大值进行彻底测试,并在可能的情况下使用StellarAmount辅助类或BigInteger类。
浮点数问题
尽管这不是Stellar或PHP特有的,但在比较浮点数时需要注意问题。
例如
$oldBalance = 1.605; $newBalance = 1.61; var_dump($oldBalance + 0.005); var_dump($newBalance); if ($oldBalance + 0.005 === $newBalance) { print "Equal\n"; } else { print "Not Equal\n"; }
上面的代码认为这两个值不相等,尽管打印出的是相同的值
输出
float(1.61)
float(1.61)
Not Equal
为了解决这个问题,始终以表示stroops的整数的形式处理和存储金额。只有在需要向用户显示余额时,才将其转换为十进制数。
可以使用静态属性StellarAmount::STROOP_SCALE来帮助进行此转换。
安装
要安装最新版本以在项目中使用,请
cd your_project/
composer require zulucrypto/stellar-api
如果您想使用最新的开发版本,可以使用此仓库
git clone https://github.com/zulucrypto/stellar-api.git
cd stellar-api/
composer install
入门
请参阅入门目录以了解如何使用此库的示例。
这些示例是模仿Stellar入门指南中的示例
https://www.stellar.org/developers/guides/get-started/create-account.html
在示例目录中提供了更多示例
捐赠
Stellar: GCUVDZRQ6CX347AMUUWZDYSNDFAWDN6FUYM5DVYYVO574NHTAUCQAK53