StarkWare Provider
⚠️ The StarkWare provider is in alpha
Heads up! The StarkWare provider is currently only available for Ropsten testnet and not feature complete yet.
Getting started
Install authereum@next
version:
Instantiate the Authereum SDK and get StarkWare provider:
Methods
These are the methods available under the Authereum StarkWare provider:
getStarkKey():Promise<string>
getStarkKey():Promise<string>
Returns the Stark key.
Arguments:
none
Returns:
Promise<string>
: Returns a promise with stark key string.
Example:
getPublicKey():Promise<string>
getPublicKey():Promise<string>
Returns the Stark public key.
Arguments:
none
Returns:
Promise<string>
: Returns a promise with stark public key string.
Example:
setContractAddress(contractAddress):Promise<void>
setContractAddress(contractAddress):Promise<void>
Sets the StarkEx contract address to use for the provider.
Arguments:
Value
Type
Definition
contractAddress
String
StarkEx contract address
Returns:
Promise<void>
Example:
getContractAddress():Promise<string>
getContractAddress():Promise<string>
Returns the StarkEx contract address.
Arguments:
none
Returns:
Promise<string>
: Returns a promise with contract address.
Example:
registerUser(ethKey, operatorSignature):Promise<string>
registerUser(ethKey, operatorSignature):Promise<string>
Submits a transaction to register the Stark key.
Arguments:
Value
Type
Definition
ethKey
String
Ethereum EOA and account contract address
operatorSignature
String
Operator signature required for registration
Returns:
Promise<string>:
Returns a promise with transaction hash.
Example:
depositEth(vaultId, amount, quantum):Promise<string>
depositEth(vaultId, amount, quantum):Promise<string>
Submits a transaction to deposit ETH to vault.
Arguments:
Value
Type
Definition
vaultId
String
Vault ID (e.g. 15
)
amount
String
ETH amount to deposit in wei (e.g. 1000000000000000
)
quantum
String
Quantum value (e.g. 10
)
Returns:
Promise<string>:
Returns a promise with transaction hash.
Example:
depositErc20(vaultId, amount, quantum, token):Promise<string>
depositErc20(vaultId, amount, quantum, token):Promise<string>
Submits a transaction to deposit ERC20 token to vault.
Arguments:
Value
Type
Definition
vaultId
String
Vault ID (e.g. 15
)
amount
String
Token amount to deposit
(e.g. if decimals is 6
, to deposit 0.42
it would be 420000
)
quantum
String
Quantum value (e.g. 1000
)
token
String
Token contract address
Returns:
Promise<>:
Returns a promise with transaction hash.
Example:
depositErc721(vaultId, tokenId, token):Promise<string>
depositErc721(vaultId, tokenId, token):Promise<string>
Submits a transaction to deposit ERC721 NFT to vault.
Arguments:
Value
Definition
vaultId
Vault ID (e.g. 15
)
tokenId
Token ID (e.g. 452
)
token
NFT contract address
Returns:
Promise<string>:
Returns a promise with transaction hash.
Example:
cancelDeposit(vaultId, assetType):Promise<string>
cancelDeposit(vaultId, assetType):Promise<string>
Submits transaction to cancel deposit.
Arguments:
Value
Type
Definition
assetType
String
Asset type hash
vauldId
String
Vault ID (e.g. 15
)
Returns:
Promise<string>:
Returns a promise with transaction hash.
Example:
reclaimDeposit(vaultId, assetType):Promise<string>
reclaimDeposit(vaultId, assetType):Promise<string>
Submits transaction to reclaim deposit after cancelling deposit.
Arguments:
Value
Type
Definition
assetType
String
Asset type hash
vaultId
String
Vault ID (e.g. 15
)
Returns:
Promise<string>:
Returns a promise with transaction hash.
Example:
withdrawEth(quantum, recipient?):Promise<string>
withdrawEth(quantum, recipient?):Promise<string>
Submits transaction to withdraw ETH from vault.
Arguments:
Value
Type
Definition
quantum
String
Quantum value (e.g. 10
)
recipient
String
(Optional) Recipient address
Returns:
Promise<string>:
Returns a promise with transaction hash.
Example:
withdrawErc20(quantum, token, recipient?):Promise<string>
withdrawErc20(quantum, token, recipient?):Promise<string>
Submits transaction to withdraw ERC20 token from vault.
Arguments:
Value
Type
Definition
quantum
String
Quantum value (e.g. 1000
)
token
String
Token contract address
recipient
String
(Optional) Recipient address
Returns:
Promise<string>:
Returns a promise with transaction hash.
Example:
withdrawErc721(tokenId, token, recipient?):Promise<string>
withdrawErc721(tokenId, token, recipient?):Promise<string>
Submits transaction to withdraw ERC721 NFT from vault.
Arguments:
Value
Type
Definition
tokenId
String
Quantum value (e.g. 1000
)
token
String
Token ID (e.g. 452
)
recipient
String
(Optional) Recipient address
Returns:
Promise<string>:
Returns a promise with transaction hash.
Example:
fullWithdrawalRequest(vaultId):Promise<string>
fullWithdrawalRequest(vaultId):Promise<string>
Submits transaction to do a request to withdraw all tokens from vault.
Arguments:
Value
Type
Definition
vaultId
String
Vault ID (e.g. 15
)
Returns:
Promise<string>:
Returns a promise with transaction hash.
Example:
freezeRequest(vaultId):Promise<string>
freezeRequest(vaultId):Promise<string>
Submits transaction to freeze vault.
Arguments:
Value
Type
Definition
vaultId
String
Vault ID (e.g. 15
)
Returns:
Promise<string>:
Returns a promise with transaction hash.
Example:
escape(vaultId, assetType, quantizedAmount):Promise<string>
escape(vaultId, assetType, quantizedAmount):Promise<string>
Submits transaction to request escape from frozen contract.
Arguments:
Value
Type
Definition
vaultId
String
Vault ID (e.g. 15
)
assetType
String
Asset type hash
quantizedAmount
String
Quantized amount (e.g. amount / quantum
)
Returns:
Promise<string>:
Returns a promise with object containing transaction hash.
Example:
transfer({object}):Promise<string>
transfer({object}):Promise<string>
Transfer ETH, ERC20, or ERC721 to a stark account. Returns signature.
Arguments:
Object parameters:
Value
Type
Definition
from
TransferParams
Transfer sender params.
to
TransferParams
Transfer recipient params.
asset
Asset
Asset to transfer
amount
String
Amount
nonce
String
Nonce
expirationTimestamp
String
Expiration timestamp
condition
String
(optional) Condition hash (encoded hash of transfer address and fact)
conditionalTransferAddress
String
(optional) Conditional transfer address (not needed if condition
hash is set)
conditionalTransferFact
String
(optional) Condition transfer fact (not needed if condition
hash is set)
Asset
Value
Type
Definition
type
String
Asset standard (e.g. ETH
, ERC20
, ERC721)
data
AssetData
Asset data object
AssetData
Value
Type
Definition
quantum
String
Quantum value. Required if asset type is ETH
or ERC20
tokenAddress
String
Token address. Required if asset type is ERC20
or ERC721
tokenId
String
Token ID. Required if asset type is ERC721
TransferParams
Value
Type
Definition
vaultId
String
Vault ID
starkKey
String
Stark key.
Returns:
Promise<string>:
Returns a promise with transfer stark signature.
Example:
transferEth({object}):Promise<string>
transferEth({object}):Promise<string>
Transfer ETH to a stark account. Returns signature.
Arguments:
Object parameters:
Value
Type
Definition
senderVaultId
String
Sender vault ID
receiverVaultId
String
Receiver vault ID
receiverKey
String
Receiver stark key
nonce
String
Nonce
expirationTimestamp
String
Expiration timestamp
condition
String
Conditional transfer hash
quantum
String
Quantum value
amount
String
Amount
Returns:
Promise<string>:
Returns a promise with transfer stark signature.
Example:
transferErc20({object}):Promise<string>
transferErc20({object}):Promise<string>
Transfer ERC20 token to a stark account. Returns signature.
Arguments:
Object parameters:
Value
Type
Definition
senderVaultId
String
Sender vault ID
receiverVaultId
String
Receiver vault ID
receiverKey
String
Receiver stark key
nonce
String
Nonce
expirationTimestamp
String
Expiration timestamp
condition
String
Conditional transfer hash
assetContractAddress
String
ERC20 contract address
quantum
String
Quantum value
amount
String
Amount
Returns:
Promise<string>:
Returns a promise with transfer stark signature.
Example:
transferErc721({object}):Promise<string>
transferErc721({object}):Promise<string>
Transfer ERC721 token to a stark account. Returns signature.
Arguments:
Object parameters:
Value
Type
Definition
senderVaultId
String
Sender vault ID
receiverVaultId
String
Receiver vault ID
receiverKey
String
Receiver stark key
nonce
String
Nonce
expirationTimestamp
String
Expiration timestamp
condition
String
Conditional transfer hash
assetContractAddress
String
ERC721 contract address
tokenId
String
Token ID
Returns:
Promise<string>:
Returns a promise with transfer stark signature.
Example:
createOrder({object}):Promise<string>
createOrder({object}):Promise<string>
Create a buy or sell limit order. Returns a signature
Arguments:
Object parameters:
Value
Type
Definition
sell
OrderParams
Sell order params
buy
OrderParams
Buy order params.
nonce
String
Nonce
expirationTimestamp
String
Expiration timestamp
OrderParams
Value
Type
Definition
type
String
Asset standard (e.g. ETH
, ERC20
, ERC721)
data
AssetData
Asset data object
amount
String
Amount
vaultId
String
Vault ID
AssetData
Value
Type
Definition
quantum
String
Quantum value. Required if asset type is ETH
or ERC20
tokenAddress
String
Token address. Required if asset type is ERC20
or ERC721
tokenId
String
Token ID. Required if asset type is ERC721
Returns:
Promise<string>:
Returns a promise with transfer stark signature.
Example
deserializeSignature(signature)
Returns the
r
ands
values of serialized signature.
Arguments:
Value
Type
Definition
signature
String
Signature hex string
Returns:
Promise<{r, s, recoveryParam?}>:
Returns object
Example:
serializeSignature({r, s, recoveryParam?}):string
Returns the serialized signature.
Arguments:
Value
Type
Definition
r
String
Signature r value
v
String
Signature v
value
recoveryParam
Number
(optional) Recovery parameter value
Returns:
Promise<string>: Returns serialized signature as hex string.
Example:
send(method, params):Promise<object>
send(method, params):Promise<object>
Call StarkWare JSON RPC method with payload.
Arguments:
Value
Type
Definition
method
String
Method name (e.g. stark_transfer
)
params
Object | Array
Object or array containing parameters
Returns:
Promise<{id, result}>:
Returns promise with object containing response result.
Example:
getAssetType({assetStandard, assetContractAddress?, quantum?, amount?}):Promise<string>
getAssetType({assetStandard, assetContractAddress?, quantum?, amount?}):Promise<string>
Returns asset type hash.
TODO
starkSignMessage(msg):Promise<string>
starkSignMessage(msg):Promise<string>
Signs message with stark key.
TODO
signMessage(msg):Promise<string>
signMessage(msg):Promise<string>
Signs message with ethereum key.
TODO
signPersonalMessage(msg):Promise<string>
signPersonalMessage(msg):Promise<string>
Signs personal message with ethereum key.
TODO
signTransaction(tx):Promise<string>
signTransaction(tx):Promise<string>
Sign transaction.
TODO
sendTransaction(tx):Promise<string>
sendTransaction(tx):Promise<string>
Send transaction.
TODO
estimateGas(tx):Promise<string>
estimateGas(tx):Promise<string>
Estimate gas.
TODO
Additional information
Please refer to the StarkWare JSON RPC specification for example inputs.
You can test out StarkWare methods in the Authereum Ropsten Kitchen Sink.
Last updated
Was this helpful?