Skip to content

Commit e6ceaf6

Browse files
add support for soroban prev 8
1 parent e156c81 commit e6ceaf6

19 files changed

+1112
-944
lines changed

CHANGELOG.md

+5
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
## [1.5.3] - 08.Apr.2023.
2+
- add support for soroban prev 8
3+
- improve soroban tests & docs
4+
- add missing proof_of_liveness kyc field
5+
16
## [1.5.2] - 03.Mar.2023.
27
- add support for soroban prev 7
38
- add support for soroban auth next

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ The Soneso open source Stellar SDK for Flutter is build with Dart and provides A
1111
1. Add the dependency to your pubspec.yaml file:
1212
```
1313
dependencies:
14-
stellar_flutter_sdk: ^1.5.2
14+
stellar_flutter_sdk: ^1.5.3
1515
```
1616
2. Install it (command line or IDE):
1717
```

lib/src/invoke_host_function_operation.dart

+15-23
Original file line numberDiff line numberDiff line change
@@ -203,11 +203,11 @@ abstract class InvokeHostFunctionOperation extends Operation {
203203
op.function.createContractArgs!.contractID.discriminant ==
204204
XdrContractIDType.CONTRACT_ID_FROM_SOURCE_ACCOUNT) {
205205
if (op.function.createContractArgs!.source.discriminant ==
206-
XdrSCContractCodeType.SCCONTRACT_CODE_WASM_REF) {
206+
XdrSCContractExecutableType.SCCONTRACT_EXECUTABLE_WASM_REF) {
207207
// use builder of create contract op
208208
return CreateContractOp.builder(op);
209209
} else if (op.function.createContractArgs!.source.discriminant ==
210-
XdrSCContractCodeType.SCCONTRACT_CODE_TOKEN) {
210+
XdrSCContractExecutableType.SCCONTRACT_EXECUTABLE_TOKEN) {
211211
// use builder of deploy stellar asset contract with account op
212212
return DeploySACWithSourceAccountOp.builder(op);
213213
}
@@ -254,10 +254,7 @@ class InvokeContractOp extends InvokeHostFunctionOperation {
254254
List<XdrSCVal> invokeArgsList = List<XdrSCVal>.empty(growable: true);
255255

256256
// contract id
257-
XdrSCVal contractIDScVal = XdrSCVal(XdrSCValType.SCV_OBJECT);
258-
XdrSCObject contractIDSCObject = XdrSCObject(XdrSCObjectType.SCO_BYTES);
259-
contractIDSCObject.bin = XdrDataValue(Util.hexToBytes(this._contractID));
260-
contractIDScVal.obj = contractIDSCObject;
257+
XdrSCVal contractIDScVal = XdrSCVal.forBytes(Util.hexToBytes(this._contractID));
261258
invokeArgsList.add(contractIDScVal);
262259

263260
// function name
@@ -292,19 +289,14 @@ class InvokeContractOp extends InvokeHostFunctionOperation {
292289

293290
List<XdrSCVal> invokeArgsList = xdrHostFunction.invokeArgs!;
294291
if (invokeArgsList.length < 2 ||
295-
invokeArgsList.elementAt(0).discriminant != XdrSCValType.SCV_OBJECT ||
296-
invokeArgsList.elementAt(0).obj == null ||
292+
invokeArgsList.elementAt(0).discriminant != XdrSCValType.SCV_BYTES ||
293+
invokeArgsList.elementAt(0).bytes == null ||
297294
invokeArgsList.elementAt(1).discriminant != XdrSCValType.SCV_SYMBOL ||
298295
invokeArgsList.elementAt(1).sym == null) {
299296
throw new Exception("invalid argument");
300297
}
301298

302-
XdrSCObject contractIDSCObject = invokeArgsList.elementAt(0).obj!;
303-
if (contractIDSCObject.discriminant != XdrSCObjectType.SCO_BYTES ||
304-
contractIDSCObject.bin == null) {
305-
throw new Exception("invalid argument");
306-
}
307-
String contractID = Util.bytesToHex(contractIDSCObject.bin!.dataValue);
299+
String contractID = Util.bytesToHex(invokeArgsList.elementAt(0).bytes!.dataValue);
308300
String functionName = invokeArgsList.elementAt(1).sym!;
309301

310302
List<XdrSCVal>? funcArgs;
@@ -387,8 +379,8 @@ class CreateContractOp extends InvokeHostFunctionOperation {
387379
XdrContractID(XdrContractIDType.CONTRACT_ID_FROM_SOURCE_ACCOUNT);
388380
contractId.salt = this._salt;
389381

390-
XdrSCContractCode code =
391-
XdrSCContractCode(XdrSCContractCodeType.SCCONTRACT_CODE_WASM_REF);
382+
XdrSCContractExecutable code =
383+
XdrSCContractExecutable(XdrSCContractExecutableType.SCCONTRACT_EXECUTABLE_WASM_REF);
392384
code.wasmId = XdrHash(Util.hexToBytes(wasmId));
393385

394386
xdrHostFunction.createContractArgs =
@@ -409,7 +401,7 @@ class CreateContractOp extends InvokeHostFunctionOperation {
409401
xdrHostFunction.createContractArgs!.contractID.discriminant !=
410402
XdrContractIDType.CONTRACT_ID_FROM_SOURCE_ACCOUNT ||
411403
xdrHostFunction.createContractArgs!.source.discriminant !=
412-
XdrSCContractCodeType.SCCONTRACT_CODE_WASM_REF ||
404+
XdrSCContractExecutableType.SCCONTRACT_EXECUTABLE_WASM_REF ||
413405
xdrHostFunction.createContractArgs!.source.wasmId == null) {
414406
throw new Exception("invalid argument");
415407
}
@@ -450,8 +442,8 @@ class DeploySACWithSourceAccountOp extends InvokeHostFunctionOperation {
450442
XdrContractID(XdrContractIDType.CONTRACT_ID_FROM_SOURCE_ACCOUNT);
451443
contractId.salt = this._salt;
452444

453-
XdrSCContractCode code =
454-
XdrSCContractCode(XdrSCContractCodeType.SCCONTRACT_CODE_TOKEN);
445+
XdrSCContractExecutable code =
446+
XdrSCContractExecutable(XdrSCContractExecutableType.SCCONTRACT_EXECUTABLE_TOKEN);
455447

456448
xdrHostFunction.createContractArgs =
457449
XdrCreateContractArgs(contractId, code);
@@ -471,7 +463,7 @@ class DeploySACWithSourceAccountOp extends InvokeHostFunctionOperation {
471463
xdrHostFunction.createContractArgs!.contractID.discriminant !=
472464
XdrContractIDType.CONTRACT_ID_FROM_SOURCE_ACCOUNT ||
473465
xdrHostFunction.createContractArgs!.source.discriminant !=
474-
XdrSCContractCodeType.SCCONTRACT_CODE_TOKEN) {
466+
XdrSCContractExecutableType.SCCONTRACT_EXECUTABLE_TOKEN) {
475467
throw new Exception("invalid argument");
476468
}
477469

@@ -498,8 +490,8 @@ class DeploySACWithAssetOp extends InvokeHostFunctionOperation {
498490
XdrContractID(XdrContractIDType.CONTRACT_ID_FROM_ASSET);
499491
contractId.asset = this._asset.toXdr();
500492

501-
XdrSCContractCode code =
502-
XdrSCContractCode(XdrSCContractCodeType.SCCONTRACT_CODE_TOKEN);
493+
XdrSCContractExecutable code =
494+
XdrSCContractExecutable(XdrSCContractExecutableType.SCCONTRACT_EXECUTABLE_TOKEN);
503495

504496
xdrHostFunction.createContractArgs =
505497
XdrCreateContractArgs(contractId, code);
@@ -520,7 +512,7 @@ class DeploySACWithAssetOp extends InvokeHostFunctionOperation {
520512
XdrContractIDType.CONTRACT_ID_FROM_ASSET ||
521513
xdrHostFunction.createContractArgs!.contractID.asset == null ||
522514
xdrHostFunction.createContractArgs!.source.discriminant !=
523-
XdrSCContractCodeType.SCCONTRACT_CODE_TOKEN) {
515+
XdrSCContractExecutableType.SCCONTRACT_EXECUTABLE_TOKEN) {
524516
throw new Exception("invalid argument");
525517
}
526518

lib/src/sep/0011/txrep.dart

+9-7
Original file line numberDiff line numberDiff line change
@@ -578,13 +578,14 @@ class TxRep {
578578
String opPrefix = prefix + 'liquidityPoolWithdrawOp.';
579579
return _getLiquidityPoolWithdrawOp(sourceAccountId, opPrefix, map);
580580
}
581-
if (opType == 'INVOKE_HOST_FUNCTION') {
581+
/*if (opType == 'INVOKE_HOST_FUNCTION') {
582582
String opPrefix = prefix + 'invokeHostFunctionOp.';
583583
return _getInvokeHostFunctionOp(sourceAccountId, opPrefix, map);
584-
}
584+
}*/
585585
throw Exception('invalid or unsupported [$prefix].type - $opType');
586586
}
587587

588+
/*
588589
static InvokeHostFunctionOperation _getInvokeHostFunctionOp(
589590
String? sourceAccountId, String opPrefix, Map<String, String> map) {
590591
String? fnType = _removeComment(map[opPrefix + 'function.type']);
@@ -1407,7 +1408,7 @@ class TxRep {
14071408
throw Exception('unknown $prefix' + 'type');
14081409
}
14091410
}
1410-
1411+
*/
14111412
static LiquidityPoolWithdrawOperation _getLiquidityPoolWithdrawOp(
14121413
String? sourceAccountId, String opPrefix, Map<String, String> map) {
14131414
String? liquidityPoolID = _removeComment(map[opPrefix + 'liquidityPoolID']);
@@ -3436,7 +3437,7 @@ class TxRep {
34363437
_addLine('$prefix.amount', _toAmount(operation.amount), lines);
34373438
_addLine('$prefix.minAmountA', _toAmount(operation.minAmountA), lines);
34383439
_addLine('$prefix.minAmountB', _toAmount(operation.minAmountB), lines);
3439-
} else if (operation is InvokeHostFunctionOperation) {
3440+
} /*else if (operation is InvokeHostFunctionOperation) {
34403441
String fnPrefix = prefix + ".function";
34413442
_addLine('$fnPrefix.type', _txRepInvokeHostFnType(operation.functionType),
34423443
lines);
@@ -3499,9 +3500,9 @@ class TxRep {
34993500
for (int i = 0; i < contractAuth.length; i++) {
35003501
_addContractAuth(contractAuth[i], lines, prefix + '.auth[$i]');
35013502
}
3502-
}
3503+
}*/
35033504
}
3504-
3505+
/*
35053506
static _addContractAuth(
35063507
XdrContractAuth auth, List<String> lines, String prefix) {
35073508
if (auth.addressWithNonce != null) {
@@ -3976,7 +3977,7 @@ class TxRep {
39763977
break;
39773978
}
39783979
}
3979-
3980+
*/
39803981
static _addClaimPredicate(
39813982
XdrClaimPredicate? predicate, List<String>? lines, String prefix) {
39823983
if (lines == null || predicate == null) return;
@@ -4037,6 +4038,7 @@ class TxRep {
40374038
}
40384039
}
40394040

4041+
40404042
static _addSignatures(List<XdrDecoratedSignature?>? signatures,
40414043
List<String>? lines, String prefix) {
40424044
if (lines == null) return;

lib/src/soroban/soroban_auth.dart

+9-12
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ class Address {
9595

9696
/// Returns a [XdrSCVal] containing an [XdrSCObject] for this [Address].
9797
XdrSCVal toXdrSCVal() {
98-
return XdrSCVal.forObject(XdrSCObject.forAddress(toXdr()));
98+
return XdrSCVal.forAddress(toXdr());
9999
}
100100
}
101101

@@ -225,8 +225,8 @@ class ContractAuth {
225225
List<XdrSCVal> argsArr = List<XdrSCVal>.empty(growable: true);
226226
if (xdr.signatureArgs.length > 0) {
227227
XdrSCVal innerVal = xdr.signatureArgs[0];
228-
if (innerVal.obj != null && innerVal.obj!.vec != null) {
229-
argsArr = innerVal.obj!.vec!;
228+
if (innerVal.vec != null) {
229+
argsArr = innerVal.vec!;
230230
} else {
231231
argsArr = xdr.signatureArgs;
232232
}
@@ -255,9 +255,7 @@ class ContractAuth {
255255
// See: https://discord.com/channels/897514728459468821/1076723574884282398/1078095366890729595
256256
List<XdrSCVal> sigArgs = List<XdrSCVal>.empty(growable: true);
257257
if (signatureArgs.length > 0) {
258-
XdrSCObject obj = XdrSCObject.forVec(signatureArgs);
259-
XdrSCVal val = XdrSCVal.forObject(obj);
260-
sigArgs.add(val);
258+
sigArgs.add(XdrSCVal.forVec(signatureArgs));
261259
}
262260
return new XdrContractAuth(
263261
addressWithNonce, rootInvocation.toXdr(), sigArgs);
@@ -281,13 +279,12 @@ class AccountEd25519Signature {
281279
AccountEd25519Signature(this.publicKey, this.signatureBytes);
282280

283281
XdrSCVal toXdrSCVal() {
284-
XdrSCObject pkObj = XdrSCObject.forBytes(publicKey.getEd25519()!.uint256);
285-
XdrSCObject sigObj = XdrSCObject.forBytes(signatureBytes);
282+
XdrSCVal pkVal = XdrSCVal.forBytes(publicKey.getEd25519()!.uint256);
283+
XdrSCVal sigVal = XdrSCVal.forBytes(signatureBytes);
286284
XdrSCMapEntry pkEntry = XdrSCMapEntry(
287-
XdrSCVal.forSymbol("public_key"), XdrSCVal.forObject(pkObj));
285+
XdrSCVal.forSymbol("public_key"), pkVal);
288286
XdrSCMapEntry sigEntry = XdrSCMapEntry(
289-
XdrSCVal.forSymbol("signature"), XdrSCVal.forObject(sigObj));
290-
XdrSCObject resultObj = XdrSCObject.forMap([pkEntry, sigEntry]);
291-
return XdrSCVal.forObject(resultObj);
287+
XdrSCVal.forSymbol("signature"), sigVal);
288+
return XdrSCVal.forMap([pkEntry, sigEntry]);
292289
}
293290
}

0 commit comments

Comments
 (0)