Albedo 的意向界面模块
此库是一个轻量级浏览器包 阿尔贝多 API 密码 为所有支持的意向提供一个基于承诺的界面.
安装
npm i -S @albedo-link/intent
使用量
设置
import albedo from '@albedo-link/intent'
意图
意图 public_key - 查看公用钥匙
请求账户公用钥匙。 这是基于Stellar的应用程序的简单认证方式. 响应确保用户拥有相应的密钥.
参数
token(弦声) - 说吧 (可选) 应用程序生成的验证符( 应该是独有的或随机的) .callback(弦声) - 说吧 (可选) 可选的 URL 召回 Albedo 会在那里 POST 一个签名的符号和公钥 .require_existing(布尔) - 说吧 (可选) 只允许现有的 Albedo 账户 .
回返
pubkey(弦声) - 用户选择的公用钥匙.signed_message(弦声) - 从公用钥匙和验证符中衍生出HEX编码认证信息.signature(弦声) - HEX编码为ED25519的认证消息签名,可以进一步用于验证用户的密钥pair所有权.
示例
albedo.publicKey({
token: 'r9gbUuThXLr/wOrg2dxWHOO4DQsvQsTpkv1OtfETB3c='
})
.then(res => console.log(res))
意图 sign_message - 签署短信
请求任意签名信件 。 可用于实施身份/所有权核查.
参数
message(弦声) - 说吧 (必须) 要签名的短信 .pubkey(弦声) - 说吧 (可选) 应用程序要求的具体公钥 .callback(弦声) - 说吧 (可选) 可选的 URL 调用 Albedo 将 POST 的签名消息 .
回返
pubkey(弦声) - 用户选择的公用钥匙.original_message(弦声) - 从请求中签名的短信.signed_message(弦声) - HEX编码消息来自公用钥匙和原始消息.message_signature(弦声) - HEX编码为ED25519 签名电文.
示例
albedo.signMessage({
message: 'Alice doesn\'t trust Bob'
})
.then(res => console.log(res))
意图 tx - 签名交易
请求签署交易。 返回可以提交网络或用于多相协调的签名交易信封.
参数
xdr(弦声) - 说吧 (必须) 要签名的 XDR 编码交易信封 .pubkey(弦声) - 说吧 (可选) 应用程序要求的具体公钥 .network(弦声) - 说吧 (可选) 斯特拉尔网络标识符.callback(弦声) - 说吧 (可选) 可选的 URL 回调 Albedo 将 POST 签名交易 XDR 而不是提交 Horizon .description(弦声) - 说吧 (可选) 开发者提供的可选的人类友好短交易描述.submit(布尔) - 说吧 (可选) 如果设定, 所签名的交易将提交 Horizon 服务器, 而不是返回应用程序 .
回返
xdr(弦声) - XDR编码的交易信封.tx_hash(弦声) - HEX编码交易散列.signed_envelope_xdr(弦声) - XDR - 编码交易信封 有新的签名.network(弦声) - 斯特拉尔网络识别器.result(标 题) - 如果交易已自动提交,则来自Horizon的可选回复.
示例
albedo.tx({
xdr: 'AAAAALPZeTF.......B0dpb99l'
})
.then(res => console.log(res))
意图 pay - 支付
要求用户付款。 任何Stellar资产的工作,支持交易备忘录.
参数
amount(弦声) - 说吧 (必须) 要求的付款数额.destination(弦声) - 说吧 (必须) 付款目的地地址.asset_code(弦声) - 说吧 (可选) 资产代码(为 XLM 的 sip).asset_issuer(弦声) - 说吧 (可选) 资产发行商( sip for XLM).memo(弦声) - 说吧 (可选) 交易备忘录(交换和一些锚需).memo_type(弦声) - 说吧 (可选) 交易备忘录类型 .pubkey(弦声) - 说吧 (可选) 应用程序要求的具体公钥 .network(弦声) - 说吧 (可选) 斯特拉尔网络标识符或私人网络密码句.callback(弦声) - 说吧 (可选) 可选的 URL 回调 Albedo 将 POST 签名交易 XDR 而不是提交 Horizon .submit(布尔) - 说吧 (可选) 如果设定, 所签名的交易将提交 Horizon 服务器, 而不是返回应用程序 .
回返
amount(弦声) - 要求支付的金额.destination(弦声) - 请求的付款目的地地址.asset_code(弦声) - 请求提供资产代码.asset_issuer(弦声) - 资产发行人.memo(弦声) - 交易备忘录从请求.memo_type(弦声) - 交易备忘录类型的请求.tx_hash(弦声) - HEX编码交易散列.signed_envelope_xdr(弦声) - XDR - 编码交易信封 有新的签名.pubkey(弦声) - 用户选择的公用钥匙.network(弦声) - 斯特拉尔网络识别器.result(标 题) - 如果交易已自动提交,则来自Horizon的可选回复.
示例
albedo.pay({
amount: '5',
asset_code: 'EURT',
asset_issuer: 'GAP5LETOV6YIE62YAM56STDANPRDO7ZFDBGSNHJQIYGGKSMOZAHOOS2S'
})
.then(res => console.log(res))
意图 trust - 建立信托关系
请求允许为给定的 Stellar 资产创建信任线 。 逐渐地简化了为锚地,ICO,和空投而创建信任线的过程.
参数
asset_code(弦声) - 说吧 (必须) 信托资产代码.asset_issuer(弦声) - 说吧 (必须) 信托资产发行商地址.limit(弦声) - 说吧 (可选) 信任限度.memo(弦声) - 说吧 (可选) 交易备忘录(交换和一些锚需).memo_type(弦声) - 说吧 (可选) 交易备忘录类型 .pubkey(弦声) - 说吧 (可选) 应用程序要求的具体公钥 .network(弦声) - 说吧 (可选) 斯特拉尔网络标识符或私人网络密码句.callback(弦声) - 说吧 (可选) 可选的 URL 回调 Albedo 将 POST 签名交易 XDR 而不是提交 Horizon .submit(布尔) - 说吧 (可选) 如果设定, 所签名的交易将提交 Horizon 服务器, 而不是返回应用程序 .
回返
asset_code(弦声) - 来自请求的信托资产代码.asset_issuer(弦声) - 请求寄出的信托资产发行人地址.limit(弦声) - 对请求的信任限制.tx_hash(弦声) - HEX编码交易散列.signed_envelope_xdr(弦声) - XDR - 编码交易信封 有新的签名.pubkey(弦声) - 用户选择的公用钥匙.network(弦声) - 斯特拉尔网络识别器.result(标 题) - 如果交易已自动提交,则来自Horizon的可选回复.
示例
albedo.trust({
asset_code: 'EURT',
asset_issuer: 'GAP5LETOV6YIE62YAM56STDANPRDO7ZFDBGSNHJQIYGGKSMOZAHOOS2S'
})
.then(res => console.log(res))
意图 exchange - 交换信使
请求允许以市场价格在Stellar DEX上购买代币.
参数
amount(弦声) - 说吧 (必须) 所要购买的资产数量.max_price(弦声) - 说吧 (必须) 用户愿意支付的最高价格 .sell_asset_code(弦声) - 说吧 (可选) 出售资产的资产代码.sell_asset_issuer(弦声) - 说吧 (可选) 要出售资产的发行人账户.buy_asset_code(弦声) - 说吧 (可选) 要购买的资产代码.buy_asset_issuer(弦声) - 说吧 (可选) 要购买资产的发行人账户.memo(弦声) - 说吧 (可选) 交易备忘录(交换和一些锚需).memo_type(弦声) - 说吧 (可选) 交易备忘录类型 .pubkey(弦声) - 说吧 (可选) 应用程序要求的具体公钥 .network(弦声) - 说吧 (可选) 斯特拉尔网络标识符或私人网络密码句.callback(弦声) - 说吧 (可选) 可选的 URL 回调 Albedo 将 POST 签名交易 XDR 而不是提交 Horizon .submit(布尔) - 说吧 (可选) 如果设定, 所签名的交易将提交 Horizon 服务器, 而不是返回应用程序 .
回返
amount(弦声) - 从请求购买的资产数额.max_price(弦声) - 用户愿意按要求支付的最高价格.sell_asset_code(弦声) - 应请求出售的资产代码.sell_asset_issuer(弦声) - 应请求出售资产的发行人账户.buy_asset_code(弦声) - 应请求购买的资产代码.buy_asset_issuer(弦声) - 应请求购买资产的发行人账户.tx_hash(弦声) - HEX编码交易散列.signed_envelope_xdr(弦声) - XDR - 编码交易信封 有新的签名.pubkey(弦声) - 用户选择的公用钥匙.network(弦声) - 斯特拉尔网络识别器.result(标 题) - 如果交易已自动提交,则来自Horizon的可选回复.
示例
albedo.exchange({
amount: '5',
max_price: '3.5',
sell_asset_code: 'USD',
sell_asset_issuer: 'GDUKMGUGDZQK6YHYA5Z6AY2G4XDSZPSZ3SW5UN3ARVMO6QSRDWP5YLEX',
buy_asset_code: 'EURT',
buy_asset_issuer: 'GAP5LETOV6YIE62YAM56STDANPRDO7ZFDBGSNHJQIYGGKSMOZAHOOS2S'
})
.then(res => console.log(res))
意图 implicit_flow - 默示许可
请求临时访问令牌,用于一种或多种意向,这些意向可以在用户没有明确确认的情况下用于执行动作. 为了被隐含地执行,应当授予给定意图的隐含流权限并设定"pubkey"参数.
参数
intents(弦-正弦-正弦-正弦) - 说吧 (必须) 要求的隐性流动意图.network(弦声) - 说吧 (可选) 斯特拉尔网络标识符或私人网络密码句.
回返
granted(布尔) - 用户是否给予许可.intents(弦声) - 要求的隐性流动意图.grants(弦声) - 给予的隐性流动意图.session(弦声) - 独特的隐含会话编号.valid_until(数目) - 会话到期时间戳.pubkey(弦声) - 用户选择的公用钥匙.network(弦声) - 斯特拉尔网络识别器.
示例
albedo.implicitFlow({
intents: 'tx,pay,trust,sign_message'
})
.then(res => console.log(res))
意图 manage_account - 开户设置
打开给定账户的账户设置窗口.
参数
pubkey(弦声) - 说吧 (必须) 应用程序要求的具体公钥 .network(弦声) - 说吧 (可选) 斯特拉尔网络标识符或私人网络密码句.
回返
pubkey(弦声) - 来自意图请求的公用钥匙.
示例
albedo.manageAccount()
.then(res => console.log(res))
意图 batch - 意图批次
请求执行若干tx意图 捆绑在一起。 这个意图是原子式的——一个用户一次确认或拒绝所有捆绑的请求,有相同的账户和相同的Stellar网络.
参数
intents(目标[]) - 说吧 (必须) 请求 tx 意图,应当一起执行 .pubkey(弦声) - 说吧 (可选) 应用程序要求的具体公钥 .network(弦声) - 说吧 (可选) 斯特拉尔网络标识符或私人网络密码句.
回返
intents(目标[]) - 请求的tx意图.results(目标[]) - 每项请求意图的结果矩阵.pubkey(弦声) - 用户选择的公用钥匙.network(弦声) - 斯特拉尔网络识别器.
示例
albedo.batch({
intents: 'tx,pay,trust,sign_message'
})
.then(res => console.log(res))
隐形会话
收集帮助者来简化隐含模式下的各种操作.
isImplicitSessionAllowed(intent, pubkey)
检查是否在更早时为意向 + pubkey 配对批准了默认会话 .
参数
intent(弦声) - 说吧 (必须) 专意去查.pubkey(弦声) - 说吧 (必须) 允许访问的账户的公用钥匙.
回返
true/false
示例
const isAllowed = albedo.isImplicitSessionAllowed(
'tx',
'GBQW4KLMRXIMSDWBEWX4AWQKWYW7R3E7SFPSHTUDTFFT22NNUC6COL72'
)
listImplicitSessions()
假设当前所有活动的隐含会话 .
回返
- 一系列活动会话描述符 .
示例
for (let session of albedo.listImplicitSessions()){
console.log(session.pubkey, session.valid_until, session.grants)
}
forgetImplicitSession(pubkey)
撤销账户的会话权限 .
参数
pubkey(弦声) - 说吧 (必须) 允许访问的账户的公用钥匙.
示例
const pubkey = 'GBQW4KLMRXIMSDWBEWX4AWQKWYW7R3E7SFPSHTUDTFFT22NNUC6COL72'
albedo.forgetImplicitSession(pubkey)
console.log(albedo.listImplicitSessions().some(s => s.pubkey === pubkey))
发展
为了创建UMD库捆绑,运行以下国家预防机制脚本:
npm run build
它还将自动更新所有实例和参数定义 现有意图.
运行中的测试 :
npm run test