Flutter插件dartsv的使用_TwoStack WalletSDK 是一个基于Dart语言的比特币库
Flutter插件dartsv的使用_TwoStack WalletSDK 是一个基于Dart语言的比特币库
引言
TwoStack WalletSDK 是一个基于Dart语言的比特币库,主要用于构建多平台应用(如使用Flutter框架)或服务器端比特币应用(如使用Serverpod框架)。该库遵循BitcoinSV的理念,即大规模链上扩展、协议稳定性和原生比特币协议实现。
版本2.x (2023年8月)
版本2.x是一个重大重构,打破了多个以前库API的后向兼容性。主要更新包括:
- 新增
TransactionBuilder
类用于组成交易 - 去除旧的Builder接口,直接附着在
Transaction
类上 - 完全重写了脚本解释器
Sighash
类现在暴露了SigHash Pre-Image;在创建OP_PUSH_TX
支付脚本时非常有用。- 新增
ScriptBuilder
类,使创建自定义锁定/解锁脚本更加容易。 - 合并贡献代码以提高Flutter Web支持。
支持的功能
-
自定义脚本构建接口,支持脚本内的新型锁定/支付条件
-
预制库代码支持标准锁定/解锁脚本
- P2PKH交易
- P2SH交易
- P2MS交易(裸多签)
- P2PK交易
- 数据仅交易(锁定于
OP_FALSE OP_RETURN
) - 可花数据载体交易(锁定于
PUSH_DATA [your_data] OP_DROP [P2PKH锁定代码]
)
-
HD密钥派生(BIP32)
-
原始比特币地址格式
-
比特币签名消息
-
BIP39助记词种子支持
-
内置比特币脚本解释器
-
ECIES加密/解密(支持Electrum ECIES / BIE1)
交易API示例
var utxo = txWithUTXO.outputs[0];
var outpoint = TransactionOutpoint(txWithUTXO.id, 0, utxo.satoshis, utxo.script);
var signer = TransactionSigner(SighashType.SIGHASH_FORKID.value | SighashType.SIGHASH_ALL.value, privateKey);
var unlocker = P2PKHUnlockBuilder(privateKey.publicKey);
var transaction = TransactionBuilder()
.spendFromOutpointWithSigner(signer, outpoint, TransactionInput.MAX_SEQ_NUMBER, unlocker)
.spendToPKH(recipientAddress, BigInt.from(50000000)) //花费一半的比特币
.sendChangeToPKH(changeAddress) //将更改发送到不同的地址
.withFeePerKb(50) //设置每千字节费用为50satoshis
.build(false); //构建交易,禁用检查
// 此时你已经得到了一个完整的已签名交易,准备广播
try {
transaction.verify(); //执行预广播合理性检查
} on VerificationException catch (ex){
print("Transaction failed verification - ${ex.cause}");
}
安装
此库使用Dart SDK版本3.0.7构建(https://dart.dev/tools/sdk)。从版本1.0.0起,此库支持Dart Null Safety。当前所需的最低Dart SDK版本是22.17.0。
在项目根目录下运行以下命令来拉取所需的支持Dart库:
pub get
运行测试
在项目根目录下运行以下命令来运行测试:
pub run test
更多关于Flutter插件dartsv的使用_TwoStack WalletSDK 是一个基于Dart语言的比特币库的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter插件dartsv的使用_TwoStack WalletSDK 是一个基于Dart语言的比特币库的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
关于Flutter中的未知功能插件dartsv
(假设这是一个实际存在的插件,尽管在Flutter社区中它可能并不广为人知),探索和使用的具体方法通常需要参考该插件的官方文档或源代码。由于我无法直接访问外部资源或实时查询特定插件的详细信息,我将提供一个通用的探索和使用Flutter插件的代码框架,你可以根据dartsv
插件的实际API进行调整。
1. 添加依赖
首先,你需要在pubspec.yaml
文件中添加dartsv
插件的依赖项(假设它已经在pub.dev上发布):
dependencies:
flutter:
sdk: flutter
dartsv: ^x.y.z # 替换为实际版本号
然后运行flutter pub get
来安装依赖。
2. 导入插件
在你的Dart文件中导入dartsv
插件:
import 'package:dartsv/dartsv.dart';
3. 使用插件功能
由于dartsv
的具体功能未知,我将提供一个假设性的使用案例。假设dartsv
提供了处理某种数据结构(比如SV数据)的功能,你可以这样使用它:
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('DartSV Example'),
),
body: Center(
child: FutureBuilder<String>(
future: fetchAndProcessSVData(),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
if (snapshot.hasError) {
return Text('Error: ${snapshot.error}');
} else {
return Text('Processed Data: ${snapshot.data}');
}
} else {
return CircularProgressIndicator();
}
},
),
),
),
);
}
Future<String> fetchAndProcessSVData() async {
// 假设fetchSVData是一个从网络或其他来源获取SV数据的函数
String rawSVData = await fetchSVData();
// 使用dartsv插件处理数据
var processedData = processSVData(rawSVData);
// 返回处理后的数据(这里假设处理后的数据是一个字符串)
return processedData.toString();
}
// 假设函数,需要根据实际情况实现
Future<String> fetchSVData() async {
// 模拟网络请求
await Future.delayed(Duration(seconds: 2));
return '{"key": "value"}'; // 示例数据
}
// 使用dartsv插件处理SV数据的假设函数
dynamic processSVData(String rawData) {
// 这里应该使用dartsv插件提供的API来处理数据
// 由于不知道dartsv的具体API,这里只是一个占位符
// 假设dartsv有一个parse方法可以将JSON字符串解析为SV对象
var svObject = Dartsv.parse(rawData);
// 假设我们可以从svObject中获取某个值
return svObject['key'];
}
}
注意事项
- 查阅文档:务必查阅
dartsv
插件的官方文档,了解它的具体API和使用方法。 - 错误处理:在实际应用中,添加适当的错误处理逻辑,以处理可能出现的异常情况。
- 更新依赖:定期检查并更新
dartsv
插件,以确保你使用的是最新版本,并修复任何已知问题。
由于dartsv
是一个假设的插件,上述代码中的函数和方法名(如Dartsv.parse
)需要根据实际情况进行调整。如果dartsv
插件在pub.dev上有文档或示例代码,请务必参考官方资源。