Casper
Casper
Casper can be accessed with the following coin types:
Environment | Coin Type | Faucet |
---|---|---|
Casper Production | cspr | |
Casper Testnet | tcspr | https://integration.cspr.live/tools/faucet |
Explorerhttps://explorer.mainnet.casperlabs.io/
Generating wallets
1 2 3 4 5 6 7 8 9 10 11
bitgo .coin('tcspr') .wallets() .generateWallet({ label: 'My Test Wallet', passphrase: 'secretpassphrase1a5df8380e0e30', }) .then(function (wallet) { // print the new wallet console.dir(wallet); });
1 2 3 4 5 6 7 8
LABEL="My Test Wallet" PASSPHRASE="secretpassphrase1a5df8380e0e30" curl -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -d "{ \"label\": \"$LABEL\", \"passphrase\": \"$PASSPHRASE\" }" \ http://$BITGO_EXPRESS_HOST:3080/api/v2/tcspr/wallet/generate
Before you can use a Casper wallet, it must be initialized on the Casper blockchain. A funding transaction must first be sent to the wallet's address. When BitGo detects this funding transaction, it automatically sends another initialization transaction to set up the signers and the home domain of the account.
Until the initialization transaction is confirmed, the wallet is not ready for use, and the receive address is not exposed in the API. This is to protect users from losing funds by sending to a wallet that does not exist on the network.
Warning: Do not use a Casper wallet while it is being initialized or you may lose funds.
Casper accounts must maintain a minimum balance. See the Balance section below.
Required reserve
1 2 3
curl -X GET \ -H "Authorization: Bearer $ACCESS_TOKEN" \ https://app.bitgo-test.com/api/v2/tcspr/requiredReserve
Fetch information about reserve requirements for an account. See the Balance section below.
HTTP Request
GET /api/v2/:coin/requiredReserve
Response
Field | Description |
---|---|
baseFee | Base fee used in transaction fees. |
baseReserve | Base reserve used in minimum account balances. |
reserve | Minimum account balance, calculated using base reserve. |
minimumFunding | Minimum funding balance, calculated using reserve and base fee. |
height | Height of the block that provides the base values. |
Creating addresses
1 2 3 4 5 6 7 8 9 10 11
bitgo .coin('tcspr') .wallets() .getWallet({ id: '585c51a5df8380e0e3082e46' }) .then(function (wallet) { return wallet.createAddress(); }) .then(function (newAddress) { // print new address details console.dir(newAddress); });
1 2 3 4 5
WALLET=585c51a5df8380e0e3082e46 curl -X POST \ -H "Authorization: Bearer $ACCESS_TOKEN" \ https://app.bitgo-test.com/api/v2/tcspr/wallet/$WALLET/address
Casper wallet addresses differ by a sequentially incremented transferId (because they cannot leverage the BIP-32 standard). The transferId type used by BitGo is TRANSFER_ID
: a 64-bit unsigned numeric string.
When a new address is created, the incremented transferId
and the rootAddress
are returned in the coinSpecific
property.
Balances
Casper (CSPR) the native asset of the Casper blockchain. The base unit of Casper is the mote:
- 1 mote is
10-9
or 0.000000001 Casper. - 1 Casper is
109
or 1000000000 motes (1 billion).
Balances are supported in string format: balanceString
, confirmedBalanceString
, and spendableBalanceString
.
Casper accounts must maintain a minimum balance which is calculated by adding a base reserve and a base fee. Currently, the base reserve is 2.5 CSPR and the base fee is 1 CSPR so the minimum balance required is 3.5 CSPR.
Transactions
Casper uses an account-based model like XLM and XRP. But instead of using XLM's memo
or XRP's destination tag, Casper
uses transferId
.
Currently, the fixed fee is 10,000 motes (0.0001 CSPR)
. And the minimum amount for a transaction is 2.5 CSPR.
BitGo's Casper multisig contract currently only supports one sender and one recipient so the sendMany
is not supported.
Staking
Casper provides staking service via smart contracts. Staking and unstaking requests require an active validator and an amount greater or equal to 2.5 CSPR to be provided.
Currently, the fees for staking and unstaking are 5 CSPR for both.