Class PrivateKeyWallet
- Namespace
- Thirdweb
- Assembly
- Thirdweb.dll
Represents a wallet that uses a private key for signing transactions and messages.
public class PrivateKeyWallet : IThirdwebWallet
- Inheritance
-
PrivateKeyWallet
- Implements
- Inherited Members
- Extension Methods
Constructors
PrivateKeyWallet(ThirdwebClient, EthECKey)
protected PrivateKeyWallet(ThirdwebClient client, EthECKey key)
Parameters
client
ThirdwebClientkey
EthECKey
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
EcKey
protected EthECKey EcKey { get; set; }
Property Value
- EthECKey
Methods
Create(ThirdwebClient, string)
Creates a new instance of PrivateKeyWallet using the provided private key.
public static Task<PrivateKeyWallet> Create(ThirdwebClient client, string privateKeyHex)
Parameters
client
ThirdwebClientThe Thirdweb client instance.
privateKeyHex
stringThe private key in hexadecimal format.
Returns
- Task<PrivateKeyWallet>
A new instance of PrivateKeyWallet.
Exceptions
- ArgumentNullException
Thrown when the private key is null or empty.
Delete()
Deletes the saved private key from the local storage if it exists.
public static void Delete()
Disconnect()
Disconnects the wallet (if using InAppWallet, clears session)
public virtual Task Disconnect()
Returns
EthSign(byte[])
Signs a raw message using Ethereum's signing method.
public virtual 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 virtual Task<string> EthSign(string message)
Parameters
message
stringThe message to sign.
Returns
ExecuteTransaction(ThirdwebTransactionInput)
Sends a transaction and waits for its receipt.
public virtual Task<ThirdwebTransactionReceipt> ExecuteTransaction(ThirdwebTransactionInput transactionInput)
Parameters
transactionInput
ThirdwebTransactionInput
Returns
- Task<ThirdwebTransactionReceipt>
The transaction receipt.
Export()
Exports the private key as a hexadecimal string.
public Task<string> Export()
Returns
Exceptions
- InvalidOperationException
Thrown when the wallet does not have a private key.
Generate(ThirdwebClient)
Generates a new instance of PrivateKeyWallet with a new private key.
public static Task<PrivateKeyWallet> Generate(ThirdwebClient client)
Parameters
client
ThirdwebClientThe Thirdweb client instance.
Returns
- Task<PrivateKeyWallet>
A new instance of PrivateKeyWallet.
Exceptions
- ArgumentNullException
Thrown when the client is null.
GetAddress()
Gets the address of the wallet.
public virtual Task<string> GetAddress()
Returns
GetLinkedAccounts()
Returns a list of linked accounts to the current wallet.
public virtual Task<List<LinkedAccount>> GetLinkedAccounts()
Returns
- Task<List<LinkedAccount>>
A list of LinkedAccount objects.
GetSavePath()
Gets the path to the file where a PrivateKeyWallet would be saved if PrivateKeyWallet.Save() is called.
public static string GetSavePath()
Returns
- string
The path to the file.
IsConnected()
Checks if the wallet is connected.
public virtual 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 virtual 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.
LoadOrGenerate(ThirdwebClient)
Loads a saved instance of PrivateKeyWallet from the local storage or generates an ephemeral one if not found.
public static Task<PrivateKeyWallet> LoadOrGenerate(ThirdwebClient client)
Parameters
client
ThirdwebClientThe Thirdweb client instance.
Returns
- Task<PrivateKeyWallet>
A new instance of PrivateKeyWallet.
Exceptions
- ArgumentNullException
Thrown when the client is null.
PersonalSign(byte[])
Signs a raw message using personal signing.
public virtual Task<string> PersonalSign(byte[] rawMessage)
Parameters
rawMessage
byte[]The raw message to sign.
Returns
PersonalSign(string)
Signs a message using personal signing.
public virtual 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
Save()
Saves the private key to the local storage.
public Task Save()
Returns
- Task
A task that represents the asynchronous save operation.
Exceptions
- InvalidOperationException
Thrown when the wallet does not have a private key.
SendTransaction(ThirdwebTransactionInput)
Sends a transaction.
public virtual 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 virtual Task<string> SignTransaction(ThirdwebTransactionInput transaction)
Parameters
transaction
ThirdwebTransactionInputThe transaction to sign.
Returns
SignTypedDataV4(string)
Signs typed data (version 4).
public virtual 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 virtual 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().