Class EcosystemWallet
- Namespace
- Thirdweb
- Assembly
- Thirdweb.dll
Enclave based secure cross ecosystem wallet.
public class EcosystemWallet : IThirdwebWallet
- Inheritance
-
EcosystemWallet
- Implements
- Derived
- Inherited Members
- Extension Methods
Properties
AccountType
Gets the account type of the wallet.
public ThirdwebAccountType AccountType { get; }
Property Value
Client
Gets the Thirdweb client associated with the wallet.
public ThirdwebClient Client { get; }
Property Value
Methods
Create(ThirdwebClient, string, string, string, string, AuthProvider, string, IThirdwebWallet, string)
Creates a new instance of the EcosystemWallet class.
public static Task<EcosystemWallet> Create(ThirdwebClient client, string ecosystemId, string ecosystemPartnerId = null, string email = null, string phoneNumber = null, AuthProvider authProvider = AuthProvider.Default, string storageDirectoryPath = null, IThirdwebWallet siweSigner = null, string legacyEncryptionKey = null)
Parameters
client
ThirdwebClientThe Thirdweb client instance.
ecosystemId
stringYour ecosystem ID (see thirdweb dashboard e.g. ecosystem.the-bonfire).
ecosystemPartnerId
stringYour ecosystem partner ID (required if you are integrating someone else's ecosystem).
email
stringThe email address for Email OTP authentication.
phoneNumber
stringThe phone number for Phone OTP authentication.
authProvider
AuthProviderThe authentication provider to use.
storageDirectoryPath
stringThe path to the storage directory.
siweSigner
IThirdwebWalletThe SIWE signer wallet for SIWE authentication.
legacyEncryptionKey
stringThe encryption key that is no longer required but was used in the past. Only pass this if you had used custom auth before this was deprecated.
Returns
- Task<EcosystemWallet>
A task that represents the asynchronous operation. The task result contains the created in-app wallet.
Exceptions
- ArgumentException
Thrown when required parameters are not provided.
Disconnect()
Disconnects the wallet (if using InAppWallet, clears session)
public Task Disconnect()
Returns
EthSign(byte[])
Signs a raw message using Ethereum's signing method.
public Task<string> EthSign(byte[] rawMessage)
Parameters
rawMessage
byte[]The raw message to sign.
Returns
EthSign(string)
Signs a message using Ethereum's signing method.
public Task<string> EthSign(string message)
Parameters
message
stringThe message to sign.
Returns
ExecuteTransaction(ThirdwebTransactionInput)
Sends a transaction and waits for its receipt.
public Task<ThirdwebTransactionReceipt> ExecuteTransaction(ThirdwebTransactionInput transactionInput)
Parameters
transactionInput
ThirdwebTransactionInput
Returns
- Task<ThirdwebTransactionReceipt>
The transaction receipt.
GenerateExternalLoginLink(string)
public string GenerateExternalLoginLink(string redirectUrl)
Parameters
redirectUrl
string
Returns
GetAddress()
Gets the address of the wallet.
public Task<string> GetAddress()
Returns
GetEcosystemDetails()
public Task<EcosystemWallet.EcosystemDetails> GetEcosystemDetails()
Returns
GetEmail()
[Obsolete("Use GetUserDetails instead.")]
public string GetEmail()
Returns
GetLinkedAccounts()
Returns a list of linked accounts to the current wallet.
public Task<List<LinkedAccount>> GetLinkedAccounts()
Returns
- Task<List<LinkedAccount>>
A list of LinkedAccount objects.
GetPhoneNumber()
[Obsolete("Use GetUserDetails instead.")]
public string GetPhoneNumber()
Returns
GetUserAuthDetails()
Gets the user auth details from the corresponding auth provider.
public JObject GetUserAuthDetails()
Returns
- JObject
The user auth details as a JObject
GetUserDetails()
Gets the user details from the enclave wallet.
public Task<EcosystemWallet.UserStatusResponse> GetUserDetails()
Returns
- Task<EcosystemWallet.UserStatusResponse>
A task that represents the asynchronous operation. The task result contains the user details.
IsConnected()
Checks if the wallet is connected.
public Task<bool> IsConnected()
Returns
LinkAccount(IThirdwebWallet, string, bool?, Action<string>, string, IThirdwebBrowser, BigInteger?, string, string)
Links a new account (auth method) to the current wallet. The current wallet must be connected and the wallet being linked must not be fully connected ie created.
public Task<List<LinkedAccount>> LinkAccount(IThirdwebWallet walletToLink, string otp = null, bool? isMobile = null, Action<string> browserOpenAction = null, string mobileRedirectScheme = "thirdweb://", IThirdwebBrowser browser = null, BigInteger? chainId = null, string jwt = null, string payload = null)
Parameters
walletToLink
IThirdwebWalletThe wallet to link.
otp
stringThe OTP code if the wallet to link is an email or phone wallet.
isMobile
bool?Set to true if linking OAuth on mobile.
browserOpenAction
Action<string>The action to open the browser if linking OAuth.
mobileRedirectScheme
stringThe redirect scheme if linking OAuth on mobile.
browser
IThirdwebBrowserThe browser to use if linking OAuth.
chainId
BigInteger?The chain ID if linking an external wallet (SIWE).
jwt
stringThe JWT token if linking custom JWT auth.
payload
stringThe login payload if linking custom AuthEndpoint auth.
Returns
- Task<List<LinkedAccount>>
A list of LinkedAccount objects.
LoginWithAuthEndpoint(string)
public Task<string> LoginWithAuthEndpoint(string payload)
Parameters
payload
string
Returns
LoginWithGuest()
public Task<string> LoginWithGuest()
Returns
LoginWithJWT(string)
public Task<string> LoginWithJWT(string jwt)
Parameters
jwt
string
Returns
LoginWithOauth(bool, Action<string>, string, IThirdwebBrowser, CancellationToken)
public Task<string> LoginWithOauth(bool isMobile, Action<string> browserOpenAction, string mobileRedirectScheme = "thirdweb://", IThirdwebBrowser browser = null, CancellationToken cancellationToken = default)
Parameters
isMobile
boolbrowserOpenAction
Action<string>mobileRedirectScheme
stringbrowser
IThirdwebBrowsercancellationToken
CancellationToken
Returns
LoginWithOtp(string)
public Task<string> LoginWithOtp(string otp)
Parameters
otp
string
Returns
LoginWithSiwe(BigInteger)
public Task<string> LoginWithSiwe(BigInteger chainId)
Parameters
chainId
BigInteger
Returns
PersonalSign(byte[])
Signs a raw message using personal signing.
public Task<string> PersonalSign(byte[] rawMessage)
Parameters
rawMessage
byte[]The raw message to sign.
Returns
PersonalSign(string)
Signs a message using personal signing.
public Task<string> PersonalSign(string message)
Parameters
message
stringThe message to sign.
Returns
RecoverAddressFromEthSign(string, string)
Recovers the address from a signed message using Ethereum's signing method.
public virtual Task<string> RecoverAddressFromEthSign(string message, string signature)
Parameters
Returns
RecoverAddressFromPersonalSign(string, string)
Recovers the address from a signed message using personal signing.
public virtual Task<string> RecoverAddressFromPersonalSign(string message, string signature)
Parameters
Returns
RecoverAddressFromTypedDataV4<T, TDomain>(T, TypedData<TDomain>, string)
Recovers the address from a signed message using typed data (version 4).
public virtual Task<string> RecoverAddressFromTypedDataV4<T, TDomain>(T data, TypedData<TDomain> typedData, string signature) where TDomain : IDomain
Parameters
data
TThe data to sign.
typedData
TypedData<TDomain>The typed data.
signature
stringThe signature.
Returns
Type Parameters
T
TDomain
SendOTP()
public Task SendOTP()
Returns
SendTransaction(ThirdwebTransactionInput)
Sends a transaction.
public Task<string> SendTransaction(ThirdwebTransactionInput transaction)
Parameters
transaction
ThirdwebTransactionInputThe transaction to send.
Returns
SignAuthorization(BigInteger, string, bool)
Signs an EIP-7702 authorization to invoke contract functions to an externally owned account.
public Task<EIP7702Authorization> SignAuthorization(BigInteger chainId, string contractAddress, bool willSelfExecute)
Parameters
chainId
BigIntegerThe chain ID of the contract.
contractAddress
stringThe address of the contract.
willSelfExecute
boolSet to true if the wallet will also be the executor of the transaction, otherwise false.
Returns
- Task<EIP7702Authorization>
The signed authorization as an EIP7702Authorization that can be used with AuthorizationList.
SignTransaction(ThirdwebTransactionInput)
Signs a transaction.
public Task<string> SignTransaction(ThirdwebTransactionInput transaction)
Parameters
transaction
ThirdwebTransactionInputThe transaction to sign.
Returns
SignTypedDataV4(string)
Signs typed data (version 4).
public Task<string> SignTypedDataV4(string json)
Parameters
json
stringThe JSON representation of the typed data.
Returns
SignTypedDataV4<T, TDomain>(T, TypedData<TDomain>)
Signs typed data (version 4).
public Task<string> SignTypedDataV4<T, TDomain>(T data, TypedData<TDomain> typedData) where TDomain : IDomain
Parameters
data
TThe data to sign.
typedData
TypedData<TDomain>The typed data.
Returns
Type Parameters
T
The type of the data.
TDomain
The type of the domain.
UnlinkAccount(LinkedAccount)
Unlinks an account (auth method) from the current wallet.
public Task<List<LinkedAccount>> UnlinkAccount(LinkedAccount accountToUnlink)
Parameters
accountToUnlink
LinkedAccountThe linked account to unlink. Same type returned by GetLinkedAccounts().