Skip to content

Commit

Permalink
fix: wip
Browse files Browse the repository at this point in the history
  • Loading branch information
gabaldon committed Jun 4, 2024
1 parent b276a61 commit 4ad5afa
Show file tree
Hide file tree
Showing 7 changed files with 92 additions and 44 deletions.
1 change: 1 addition & 0 deletions lib/src/crypto/hd_wallet/extended_private_key.dart
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,7 @@ class Xprv extends ExtendedKey {
}

factory Xprv.fromEncryptedXprv(String xprv, String password) {
// throw 'Error from encrypted xprv';
try {
Bech32 bech = bech32.decode(xprv);
List<int> checksum = createChecksum(bech.hrp, bech.data);
Expand Down
8 changes: 7 additions & 1 deletion lib/src/data_structures/utxo_pool.dart
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ class UtxoPool {
}

List<Utxo> sortUtxos(UtxoSelectionStrategy utxoSelectionStrategy) {
print(utxoSelectionStrategy);
print('...sortUtxos.. 0. ${map.values.toList().length}');
List<Utxo> sortedUtxos;
switch (utxoSelectionStrategy) {
case UtxoSelectionStrategy.Random:
Expand Down Expand Up @@ -68,13 +70,16 @@ class UtxoPool {
});
}
}
print('...sortUtxos.. 1. ${sortedUtxos.length}');
return sortedUtxos;
}

List<Utxo> cover({
required int amountNanoWit,
required UtxoSelectionStrategy utxoStrategy,
}) {
print('-------cover UTXOS-------');
print('amount nanowit: $amountNanoWit');
List<Utxo> utxos = sortUtxos(utxoStrategy);
if (utxos.isEmpty) {
throw 'No UTXOS to select';
Expand All @@ -86,7 +91,8 @@ class UtxoPool {
});

List<Utxo> selectedUtxos = [];

print('utxos value: $utxoValue');
print('Insufficient funds?? ${amountNanoWit > utxoValue}');
if (amountNanoWit > utxoValue) {
throw 'Insufficient funds';
}
Expand Down
20 changes: 9 additions & 11 deletions lib/src/schema/stake_key.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
part of 'schema.dart';



class StakeKey extends GeneratedMessage {
static final BuilderInfo _i = BuilderInfo('StakeOutput',
package: const PackageName('witnet'), createEmptyInstance: create)
Expand Down Expand Up @@ -41,22 +39,22 @@ class StakeKey extends GeneratedMessage {

@override
factory StakeKey.fromJson(Map<String, dynamic> json) => StakeKey(
validator: PublicKeyHash.fromAddress(json["validator"]),
withdrawer: PublicKeyHash.fromAddress(json["withdrawer"]),
);
validator: PublicKeyHash.fromAddress(json["validator"]),
withdrawer: PublicKeyHash.fromAddress(json["withdrawer"]),
);

Map<String, dynamic> jsonMap({bool asHex = false}) => {
"validator": validator.address,
"withdrawer": withdrawer.address,
};
"validator": validator.address,
"withdrawer": withdrawer.address,
};

@override
BuilderInfo get info_ => _i;

Uint8List get pbBytes => writeToBuffer();

@TagNumber(1)
PublicKeyHash get validator => $_getN(1);
PublicKeyHash get validator => $_getN(0);
@TagNumber(1)
set validator(PublicKeyHash v) {
setField(1, v);
Expand All @@ -70,10 +68,10 @@ class StakeKey extends GeneratedMessage {
PublicKeyHash ensureValidator() => $_ensure(0);

@TagNumber(2)
PublicKeyHash get withdrawer => $_getN(2);
PublicKeyHash get withdrawer => $_getN(1);
@TagNumber(2)
set withdrawer(PublicKeyHash v) {
setField(2, v);
setField(1, v);
}

@TagNumber(2)
Expand Down
27 changes: 18 additions & 9 deletions lib/src/schema/stake_output.dart
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ class StakeOutput extends GeneratedMessage {
KeyedSignature? authorization,
}) {
final _result = create();
print('result >>>>***** $value');
print('result >>>>***** $key');
print('result >>>>***** $authorization');
if (value != null) {
_result.value = Int64(value);
}
Expand All @@ -38,6 +41,7 @@ class StakeOutput extends GeneratedMessage {
if (authorization != null) {
_result.authorization = authorization;
}
print('result >>>>***** $_result');
return _result;
}

Expand All @@ -48,13 +52,16 @@ class StakeOutput extends GeneratedMessage {
factory StakeOutput.fromJson(Map<String, dynamic> json) => StakeOutput(
value: json["value"],
key: StakeKey.fromJson(json["key"]),
authorization: KeyedSignature.fromJson(json["authorization"]),
authorization: json["authorization"] != null
? KeyedSignature.fromJson(json["authorization"])
: null,
);

Map<String, dynamic> jsonMap({bool asHex = false}) => {
"value": value.toInt(),
"key": key.jsonMap(asHex: asHex),
"authorization": authorization.jsonMap(asHex: asHex),
"authorization":
authorization != null ? authorization!.jsonMap(asHex: asHex) : null,
};

@override
Expand All @@ -63,10 +70,10 @@ class StakeOutput extends GeneratedMessage {
Uint8List get pbBytes => writeToBuffer();

@TagNumber(1)
Int64 get value => $_getI64(1);
Int64 get value => $_getI64(0);
@TagNumber(1)
set value(Int64 v) {
$_setInt64(0, v);
setField(1, v);
}

@TagNumber(1)
Expand All @@ -75,7 +82,7 @@ class StakeOutput extends GeneratedMessage {
void clearValue() => clearField(1);

@TagNumber(2)
StakeKey get key => $_getN(2);
StakeKey get key => $_getN(1);
@TagNumber(2)
set key(StakeKey v) {
setField(2, v);
Expand All @@ -89,16 +96,18 @@ class StakeOutput extends GeneratedMessage {
StakeKey ensureKey() => $_ensure(1);

@TagNumber(3)
KeyedSignature get authorization => $_getN(3);
KeyedSignature? get authorization => $_getN(2);
@TagNumber(3)
set authorization(KeyedSignature v) {
setField(3, v);
set authorization(KeyedSignature? v) {
if (v != null) {
setField(3, v);
}
}

@TagNumber(3)
bool hasAuthorization() => $_has(2);
@TagNumber(3)
void clearAuthorization() => clearField(3);
@TagNumber(3)
KeyedSignature ensureAuthorization() => $_ensure(2);
KeyedSignature? ensureAuthorization() => $_ensure(2);
}
70 changes: 56 additions & 14 deletions lib/src/schema/transaction.dart
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ const Map<int, TransactionKind> _Transaction_KindByTag = {
class Transaction extends GeneratedMessage {
static final BuilderInfo _i = BuilderInfo('Transaction',
package: const PackageName('witnet'), createEmptyInstance: create)
..oo(0, [1, 2, 3, 4, 5, 6])
..oo(0, [1, 2, 3, 4, 5, 6, 7, 8])
..aOM<VTTransaction>(1, 'ValueTransfer',
protoName: 'ValueTransfer', subBuilder: VTTransaction.create)
..aOM<DRTransaction>(2, 'DataRequest',
Expand All @@ -40,9 +40,9 @@ class Transaction extends GeneratedMessage {
protoName: 'Tally', subBuilder: TallyTransaction.create)
..aOM<MintTransaction>(6, 'Mint',
protoName: 'Mint', subBuilder: MintTransaction.create)
..aOM<StakeTransaction>(6, 'Mint',
..aOM<StakeTransaction>(7, 'Stake',
protoName: 'Stake', subBuilder: StakeTransaction.create)
..aOM<UnstakeTransaction>(6, 'Mint',
..aOM<UnstakeTransaction>(8, 'Unstake',
protoName: 'Unstake', subBuilder: UnstakeTransaction.create)
..hasRequiredFields = false;

Expand Down Expand Up @@ -131,7 +131,8 @@ class Transaction extends GeneratedMessage {
case 'Stake':
return Transaction(stake: StakeTransaction.fromJson(_txn['Stake']));
case 'Unstake':
return Transaction(unstake: UnstakeTransaction.fromJson(_txn['Unstake']));
return Transaction(
unstake: UnstakeTransaction.fromJson(_txn['Unstake']));
}
} else {
throw ArgumentError('Invalid json');
Expand All @@ -142,16 +143,55 @@ class Transaction extends GeneratedMessage {
String toRawJson({bool asHex = false}) => json.encode(jsonMap(asHex: asHex));

Map<String, dynamic> jsonMap({bool asHex = false}) {
final txType = hasDataRequest() ? 'DataRequest' : 'ValueTransfer';
return {
"transaction": {
txType: {
"body": transaction.body.jsonMap(asHex: asHex),
"signatures": List<dynamic>.from(
transaction.signatures.map((x) => x.jsonMap(asHex: asHex))),
if (hasValueTransfer())
return {
"transaction": {
'ValueTransfer': {
"body": transaction.body.jsonMap(asHex: asHex),
"signatures": List<dynamic>.from(
transaction.signatures.map((x) => x.jsonMap(asHex: asHex))),
}
}
}
};
};
if (hasDataRequest())
return {
"transaction": {
'DataRequest': {
"body": transaction.body.jsonMap(asHex: asHex),
"signatures": List<dynamic>.from(
transaction.signatures.map((x) => x.jsonMap(asHex: asHex))),
}
}
};
if (hasStake())
return {
"transaction": {
'Stake': {
"body": transaction.body.jsonMap(asHex: asHex),
"signatures": List<dynamic>.from(
transaction.signatures.map((x) => x.jsonMap(asHex: asHex))),
},
}
};
if (hasUnstake())
return {
"transaction": {
'Unstake': {
"body": transaction.body.jsonMap(asHex: asHex),
"signature": transaction.signature.jsonMap(asHex: asHex),
}
}
};
else
return {
"transaction": {
'ValueTransfer': {
"body": transaction.body.jsonMap(asHex: asHex),
"signatures": List<dynamic>.from(
transaction.signatures.map((x) => x.jsonMap(asHex: asHex))),
}
}
};
}

@override
Expand Down Expand Up @@ -180,6 +220,8 @@ class Transaction extends GeneratedMessage {
if (hasReveal()) return reveal;
if (hasTally()) return tally;
if (hasMint()) return mint;
if (hasStake()) return stake;
if (hasUnstake()) return unstake;
}

TransactionKind whichKind() => _Transaction_KindByTag[$_whichOneof(0)]!;
Expand Down Expand Up @@ -284,13 +326,13 @@ class Transaction extends GeneratedMessage {
@TagNumber(7)
StakeTransaction ensureStake() => $_ensure(6);


@TagNumber(8)
UnstakeTransaction get unstake => $_getN(7);
@TagNumber(8)
set unstake(UnstakeTransaction v) {
setField(8, v);
}

@TagNumber(8)
bool hasUnstake() => $_has(7);
@TagNumber(8)
Expand Down
2 changes: 0 additions & 2 deletions lib/src/schema/unstake_body.dart
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ class UnstakeBody extends GeneratedMessage {
factory UnstakeBody({
PublicKeyHash? operator,
ValueTransferOutput? withdrawal,

}) {
final _result = create();
if (operator != null) {
Expand Down Expand Up @@ -99,5 +98,4 @@ class UnstakeBody extends GeneratedMessage {
void clearWithdrawal() => clearField(2);
@TagNumber(2)
ValueTransferOutput ensureWithdrawal() => $_ensure(1);

}
8 changes: 1 addition & 7 deletions lib/src/schema/unstake_transaction.dart
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
part of 'schema.dart';


class UnstakeTransaction extends GeneratedMessage {
static final BuilderInfo _i = BuilderInfo('UnstakeTransaction',
package: const PackageName('witnet'), createEmptyInstance: create)
..aOM<UnstakeBody>(1, 'body', subBuilder: UnstakeBody.create)

..aOM<KeyedSignature>(2, 'signature', subBuilder: KeyedSignature.create)
..hasRequiredFields = false;

Expand All @@ -26,7 +24,6 @@ class UnstakeTransaction extends GeneratedMessage {

factory UnstakeTransaction({
UnstakeBody? body,

KeyedSignature? signature,
}) {
final _result = create();
Expand All @@ -46,8 +43,7 @@ class UnstakeTransaction extends GeneratedMessage {
factory UnstakeTransaction.fromJson(Map<String, dynamic> json) =>
UnstakeTransaction(
body: UnstakeBody.fromJson(json["body"]),
signature: KeyedSignature.fromJson( json["signature"]),

signature: KeyedSignature.fromJson(json["signature"]),
);

@override
Expand All @@ -60,7 +56,6 @@ class UnstakeTransaction extends GeneratedMessage {
Map<String, dynamic> jsonMap({bool asHex = false}) => {
"body": body.jsonMap(asHex: asHex),
"signature": signature.jsonMap(asHex: asHex)

};

String get transactionID => bytesToHex(body.hash);
Expand Down Expand Up @@ -99,5 +94,4 @@ class UnstakeTransaction extends GeneratedMessage {
set signature(KeyedSignature v) {
setField(2, v);
}

}

0 comments on commit 4ad5afa

Please sign in to comment.