Releases: Soneso/stellar_flutter_sdk
Protocol 22-rc3 support
This release adds support for Protocol 22-rc3 and maintains backwards compatibility for Protocol 21 and Protocol 22-rc2.
See also: #108
Changes:
- The
createdAt
field fromTransactionInfo
is now an int again. - The field
pagingToken
fromEventInfo
is not nullable any more and will be filled for any version.
If you upgrade from the latest stable release (1.8.9) please read the info from release 1.9.0-beta first.
Protocol 22 Support
This release adds support for Protocol 22 and maintains backwards compatibility for Protocol 21.
See also: #104
To maintain compatibility for Protocol 21 until Protocol 22 is released you have to consider following braking changes if you are using this version of the SDK:
Horizon:
- The deprecated fields
amount
andnumAccounts
have been removed fromAssetResponse
- The deprecated fields
validBefore
andvalidAfter
have been removed fromTransactionResponse
Soroban:
- The legacy field
cost
has been removed fromSimulateTransactionResponse
- The
createdAt
field fromTransactionInfo
is now aString
. It wasint
before.
Other tips for migrating to Protocol 22:
- Soroban: The field
pagingToken
fromEventInfo
will not be filled any more starting with Protocol 22. Instead, the new fieldcursor
inGetEventsResponse
will be filled starting with Protocol 22. - Soroban: The new field
txHash
inGetTransactionResponse
andTransactionInfo
will be filled starting with Protocol 22. - Soroban: You can use the new
CreateContractWithConstructorHostFunction
class to create contracts that have a constructor.
Account response fix
Allows null values in account response for lastModifiedLedger
. Fixes #105
SEP-7 & other improvements
SEP-7 improvements and refactoring:
signURI
has been deprecated in favor ofaddSignature
- SEP-7 urls can now be parsed via
tryParseSep7Url
- SEP-7 urls can now be validated via
isValidSep7Url
- Signed SEP-7 urls can now be validated via
isValidSep7SignedUrl
checkUIRSchemeIsValid
has been deprecated in favor ofisValidSep7SignedUrl
verify
has been deprecated in favor ofverifySignature
verifySignature
allows you to verify if a given sep-7 url has been signed by a given public key without having to request it from origin_domaingetParameterValue
has been deprecated in favor oftryParseSep7Url
which returns all query parameters- the new function
uriSchemeReplacementsToString
allows you to build a replace parameter value from a list ofUriSchemeReplacement
objects - the new function
uriSchemeReplacementsFromString
takes a Sep-7 URL-decoded 'replace' string param and parses it to a list of
UriSchemeReplacement
objects for easy of use. - see also sep-7 test cases and sep-7 doc
Other improvements:
- http client is now forwarded to EventSource, see: PR#102
- updated toml to ^0.16.0
- minor fixes
Soroban Contract Parser
This release adds a soroban contract parser that allows you to access the contract info stored in the contract bytecode.
You can access the environment metadata, contract spec and contract meta.
The environment metadata holds the interface version that should match the version of the soroban environment host functions supported.
The contract spec contains a XdrSCSpecEntry
for every function, struct, and union exported by the contract.
In the contract meta, contracts may store any metadata in the entries that can be used by applications and tooling off-network.
You can access the parser directly if you have the contract bytecode:
var byteCode = await Util.readFile("path to .wasm file");
var contractInfo = SorobanContractParser.parseContractByteCode(byteCode);
Or you can use SorobanServer
methods to load the contract code form the network and parse it.
By contract id:
var contractInfo = await sorobanServer.loadContractInfoForContractId(contractId);
By wasm id:
var contractInfo = await sorobanServer.loadContractInfoForWasmId(wasmId);
The parser returns a SorobanContractInfo
object containing the parsed data.
In soroban_test_parser.dart you can find a detailed example of how you can access the parsed data.
SEP 6, 12 & 24 improvements
SEP-06: allow extra fields to be added in the deposit and withdrawal requests.
SEP-06: add the new userActionRequired
field to the transaction response object.
SEP-24: add the new userActionRequired
field to the transaction response object.
SEP-12: null safety improvements.
Update for Horizon API historical data changes
Due to recent changes in the Stellar Development Foundation’s Horizon API, historical data will now be limited to one year. (https://stellar.org/blog/foundation-news/sdf-s-horizon-limiting-data-to-1-year)
As a result, some claimable balance responses may return a null value for the lastModifiedTime field.
To prevent parsing issues made the lastModifiedTime field optional.
Horizon v2.31.0 and RPC v21.4.0 updates
Updates for Horizon v2.31.0
(see: #100)
- The new Horizon API endpoint: POST
/transactions_async
has been added.
It is now covered in the sdk by following new methods:
sdk.submitAsyncTransaction()
sdk.submitAsyncFeeBumpTransaction()
sdk.submitAsyncTransactionEnvelopeXdrBase64()
see also: transaction_async_test.dart
- Error schema change: POST
/transactions
now includes a the hash in its timeout response:
When submitting a transaction to the network, the sdk can throw the exception SubmitTransactionTimeoutResponseException
This exception now contains the hash of the transaction if available.
Updates for RPC v21.4.0
(see: #100)
- added support for the new endpoints:
getTransactions
,getFeeStats
andgetVersionInfo
. - fixed
getEvents
pagination options
Update SEP-12 support
- added the new
transaction_id
request parameter to get and put customer requests.
Update SEP support for web
The sdk now allows developers to set custom request headers for the SEP requests.
Although the sdk does not yet offer full support for web, this is a step that brings us closer to it,
because it helps us to avoid CORS issues.
Headers and Web fixes
Null-Safety improvements
Null-Safety improvements:
With the introduction of null-safety in dart, the sdk was migrated automatically, which resulted in all class member variables becoming nullable. Most places have been adapted in the mealtime, but there are still a few places that need to be updated.
This release updates the remaining places, especially classes representing horizon responses but also different xdr classes.
Big Amounts on Web:
This release also adds support for big amounts on web for many operations such as, change_trust
,
create_account
, payment, path_payment_strict_send
, path_payment_strict_receive
, manage_sell_offer
,
manage_buy_offer
, create_passive_sell_offer
, clawback, create_claimable_balance
, liquidity_pool_deposit
,
liquidity_pool_withdraw
. See also: #96
Breaking changes:
ContractCreditedEffectResponse
and ContractDebitedEffectResponse
moved from liquidity_pools_effects_responses.dart
to soroban_effects_responses.dart
LiquidityPoolDepositedEffectResponse
: reservesDeposited
is now a list of AssetAmount
instead of ReserveResponse
LiquidityPoolWithdrewEffectResponse
: reservesReceived
is now a list of AssetAmount
instead of ReserveResponse
LiquidityPoolRevokedEffectResponse
: reservesRevoked
is now a list of LiquidityPoolClaimableAssetAmount
instead of ReserveResponse
TrustLineFlagsUpdatedEffectResponse
moved from misc_effects_responses.dart
to trustline_effects_responses.dart
CreatePassiveSellOfferOperationResponse
: removed offerId
since it is always null
LiquidityPoolDepositOperationResponse
: reservesMax
& reservesDeposited
are now a list of AssetAmount
instead of ReserveResponse
Operation
: id is now a String
instead of int
EffectsRequestBuilder
forOperation(String operationId):
operationIdis now a
Stringinstead of
int`
Future<OperationResponse> operation(String operationId)
: operationId
is now a String
instead of int