mirror of
https://github.com/MAGICGrants/flutter_libsparkmobile.git
synced 2026-01-09 21:17:56 -05:00
WIP mint serial context serialization
This commit is contained in:
@@ -160,6 +160,28 @@ abstract final class LibSpark {
|
||||
return ret;
|
||||
}
|
||||
|
||||
static Uint8List serializeMintContext({required List<(String, int)> inputs}) {
|
||||
final inputsPtr =
|
||||
malloc.allocate<DartInputData>(sizeOf<DartInputData>() * inputs.length);
|
||||
|
||||
for (int i = 0; i < inputs.length; i++) {
|
||||
final hash =
|
||||
Uint8List.fromList(inputs[i].$1.to32BytesFromHex().reversed.toList());
|
||||
|
||||
inputsPtr[i].txHashLength = hash.length;
|
||||
inputsPtr[i].txHash = hash.unsignedCharPointer();
|
||||
inputsPtr[i].vout = inputs[i].$2;
|
||||
}
|
||||
|
||||
final result = _bindings.serializeMintContext(inputsPtr, inputs.length);
|
||||
|
||||
final serialized = result.ref.context.toUint8List(result.ref.contextLength);
|
||||
|
||||
// TODO frees
|
||||
|
||||
return serialized;
|
||||
}
|
||||
|
||||
///
|
||||
/// Create spark mint recipients
|
||||
///
|
||||
|
||||
@@ -229,6 +229,24 @@ class FlutterLibsparkmobileBindings {
|
||||
late final _selectSparkCoins = _selectSparkCoinsPtr.asFunction<
|
||||
ffi.Pointer<SelectSparkCoinsResult> Function(
|
||||
int, int, ffi.Pointer<CCSparkMintMeta>, int, int)>();
|
||||
|
||||
ffi.Pointer<SerializedMintContextResult> serializeMintContext(
|
||||
ffi.Pointer<DartInputData> inputs,
|
||||
int inputsLength,
|
||||
) {
|
||||
return _serializeMintContext(
|
||||
inputs,
|
||||
inputsLength,
|
||||
);
|
||||
}
|
||||
|
||||
late final _serializeMintContextPtr = _lookup<
|
||||
ffi.NativeFunction<
|
||||
ffi.Pointer<SerializedMintContextResult> Function(
|
||||
ffi.Pointer<DartInputData>, ffi.Int)>>('serializeMintContext');
|
||||
late final _serializeMintContext = _serializeMintContextPtr.asFunction<
|
||||
ffi.Pointer<SerializedMintContextResult> Function(
|
||||
ffi.Pointer<DartInputData>, int)>();
|
||||
}
|
||||
|
||||
/// FFI-friendly wrapper for a spark::Coin.
|
||||
@@ -539,3 +557,20 @@ final class SparkSpendTransactionResult extends ffi.Struct {
|
||||
@ffi.Int()
|
||||
external int isError;
|
||||
}
|
||||
|
||||
final class DartInputData extends ffi.Struct {
|
||||
external ffi.Pointer<ffi.UnsignedChar> txHash;
|
||||
|
||||
@ffi.Int()
|
||||
external int txHashLength;
|
||||
|
||||
@ffi.Int()
|
||||
external int vout;
|
||||
}
|
||||
|
||||
final class SerializedMintContextResult extends ffi.Struct {
|
||||
external ffi.Pointer<ffi.UnsignedChar> context;
|
||||
|
||||
@ffi.Int()
|
||||
external int contextLength;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user