official1coin / stellarsdk
Stellar网络的API客户端
Requires
- php: ^8.0
- christian-riesen/base32: ^1.6
- guzzlehttp/guzzle: ^7.0
- laravel/framework: ^8.33
- paragonie/sodium_compat: ^1.16
- phpseclib/phpseclib: ^3.0
- symfony/filesystem: ^5.2
Requires (Dev)
- phpunit/phpunit: ^9.3.3
README
用于与Stellar网络交互的PHP库。
- 与Horizon服务器通信
- 构建和签名交易
开发状态
此库处于积极开发中,应被视为beta质量。请确保您已在测试网络上进行了彻底测试,并在代码的其他地方添加了合理性检查。
大整数支持
在64位平台上,PHP的最大整数是64位。这在处理大额转账时尤其需要注意。单个XLM(1 XLM)的原生表示是10000000 stroops。
因此,如果您尝试使用XLM(或自定义资产)的MAX_INT
数量,当值转换为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 official1coin/stellarsdk
入门
请参阅入门目录,了解如何使用此库的示例。
这些示例模仿了Stellar入门指南中的示例
https://www.stellar.org/developers/guides/get-started/create-account.html
更多示例可在示例目录中找到
捐赠
Stellar: GAF3DND6FP6W2XIPMPQJPTG6SKYRD3CTKTZ6FUZGCM2ZQFY7CBI4Q646