Token
The Token contract is a modified implementation of the CW20 base, refitted to consider for bETH reward accruals.
Stores information about the bETH token.
#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)]
#[serde(rename_all = "snake_case")]
pub struct TokenInfo {
pub name: String,
pub symbol: String,
pub decimals: u8,
pub total_supply: Uint128,
pub mint: Option<MinterData>,
}
Key | Type | Description |
name | String | Name of bETH token |
symbol | String | Symbol of bETH token |
decimals | u8 | Number of decimals of bETH |
total_supply | Uint128 | Total minted supply of bETH |
mint * | MinterData | Minter information of bETH |
* = not stored until value registered
Store information about the bETH minter.
#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)]
pub struct MinterData {
pub minter: Addr,
pub cap: Option<Uint128>,
}
Key | Type | Description |
minter | Addr | Address of minter |
cap * | Uint128 | Maximum number of mintable tokens |
* = not stored until value registered
Rust
JSON
#[derive(Serialize, Deserialize, JsonSchema)]
pub struct TokenInstantiateMsg {
pub name: String,
pub symbol: String,
pub decimals: u8,
pub initial_balances: Vec<Cw20CoinHuman>,
pub mint: Option<MinterResponse>,
pub reward_contract: String,
}
{
"name": "Bonded ETH",
"symbol": "BETH",
"decimals": 6,
"total_supply": "100000000",
"mint": {
"minter": "terra1...",
"cap": "1000000000"
},
"reward_contract": "terra1..."
}
Key | Type | Description |
name | String | Name of bETH token |
symbol | String | Symbol of bETH token |
decimals | u8 | Number of decimals of bETH |
total_supply | Uint128 | Total minted supply of bETH |
mint * | MinterResponse | Minter information of bETH |
reward_contract | String | Contract address of bETH Reward |
* = optional
Transfers tokens to the specified address.
Rust
JSON
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum Cw20ExecuteMsg {
Transfer {
recipient: String,
amount: Uint128,
}
}
{
"transfer": {
"recipient": "terra1...",
"amount": "100000000"
}
}
Key | Type | Description |
recipient | String | Recipient address of token transfer |
amount | Uint128 | Amount of tokens to transfer |
Burns the specified amount of tokens.
Rust
JSON
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum Cw20ExecuteMsg {
Burn {
amount: Uint128,
}
}
{
"burn": {
"amount": "100000000"
}
}
Key | Type | Description |
amount | Uint128 | Amount of tokens to burn |
Sends tokens to the specified contract address along with a message.
Rust
JSON
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum Cw20ExecuteMsg {
Send {
contract: String,
amount: Uint128,
msg: Binary,
}
}
{
"send": {
"contract": "terra1...",
"amount": "100000000",
"msg": "eyAiZXhlY3V0ZV9tc2ciOiAiYmluYXJ5IiB9"
}
}
Key | Type | Description |
contract | String | Contract address to send tokens to |
amount | Uint128 | Amount of tokens to send |
msg | Binary | Base64-encoded JSON of receive hook message |
Mints tokens to the specified address. Can only be issued by the minter.
Rust
JSON
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum Cw20ExecuteMsg {
Mint {
recipient: String,
amount: Uint128,
}
}
{
"mint": {
"recipient": "terra1...",
"amount": "100000000"
}
}
Key | Type | Description |
recipient | String | Address to mint tokens to |
amount | Uint128 | Amount of tokens to mint |
Increases allowance for the specified spender address.
Rust
JSON
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum Cw20ExecuteMsg {
IncreaseAllowance {
spender: String,
amount: Uint128,
expires: Option<Expiration>,
}
}
#[derive(Serialize, Deserialize, Clone, Copy, PartialEq, JsonSchema, Debug)]
#[serde(rename_all = "snake_case")]
pub enum Expiration {
AtHeight(u64),
AtTime(Timestamp),
Never {},
}
{
"increase_allowance": {
"spender": "terra1...",
"amount": "100000000",
"expires": {
"at_height": 123123,
// or
"at_time": 123123,
// or
"never": {}
}
}
}
Key | Type | Description |
spender | String | Address of spender |
amount | Uint128 | Amount of tokens to increase allowance for spender |
expires * | Expiration | Information on when this allowance expires |
* = optional
Key | Type | Description |
AtHeight | u64 | Allowance expires at specified block height |
AtTime | Timestamp | Allowance expires at specified block timestamp |
Never | nil | Allowance never expires |
Decreases allowance for the specified spender address.
Rust
JSON
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum Cw20ExecuteMsg {
DecreaseAllowance {
spender: String,
amount: Uint128,
expires: Option<Expiration>,
}
}
#[derive(Serialize, Deserialize, Clone, Copy, PartialEq, JsonSchema, Debug)]
#[serde(rename_all = "snake_case")]
pub enum Expiration {
AtHeight(u64),
AtTime(Timestamp),
Never {},
}
{
"decrease_allowance": {
"spender": "terra1...",
"amount": "100000000",
"expires": {
"at_height": 123123,
// or
"at_time": 123123,
// or
"never": {}
}
}
}
Key | Type | Description |
spender | String | Address of spender |
amount | Uint128 | Amount of tokens to decrease allowance for spender |
expires * | Expiration | Information on when this allowance expires |
Key | Type | Description |
AtHeight | u64 | Allowance expires at specified block height |
AtTime | Timestamp | Allowance expires at specified block timestamp |
Never | nil | Allowance never expires |
Transfers tokens from the specified owner to the specified recipient. Requires unexpired allowance to be set beforehand.
Rust
JSON
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum Cw20ExecuteMsg {
TransferFrom {
owner: String,
recipient: String,
amount: Uint128,
}
}
{
"transfer_from": {
"owner": "terra1...",
"recipient": "terra1...",
"amount": "100000000"
}
}
Key | Type | Description |
owner | String | Address to transfer tokens from |
recipient | String | Address to transfer tokens to |
amount | Uint128 | Amount of tokens to transfer |
Sends tokens from the specified owner to the specified contract, along with a message. Requires unexpired allowance to be set beforehand.
Rust
JSON
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum Cw20ExecuteMsg {
SendFrom {
owner: String,
contract: String,
amount: Uint128,
msg: Binary,
}
}
{
"send_from": {
"owner": "terra1...",
"contract": "terra1...",
"amount": "100000000",
"msg": "eyAiZXhlY3V0ZV9tc2ciOiAiYmluYXJ5IiB9",
}
}
Key | Type | Description |
owner | String | Address to send tokens from |
contract | String | Address to send tokens to |
amount | Uint128 | Amount of tokens to send |
msg | Binary | Base64-encoded JSON of receive hook msg |
Burns tokens from the specified owner. Requires unexpired allowance to be set beforehand.
Rust
JSON
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum Cw20ExecuteMsg {
BurnFrom {
owner: String,
amount: Uint128,
}
}
{
"burn_from": {
"owner": "terra1...",
"amount": "100000000"
}
}
Key | Type | Description |
owner | String | Address to burn tokens from |
amount | Uint128 | Amount of tokens to burn |
Gets the balance for the specified address.
Rust
JSON
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum Cw20QueryMsg {
Balance {
address: String,
}
}
Key | Type | Description |
address | String | Address of holder to get balance |
#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)]
pub struct BalanceResponse {
pub balance: Uint128,
}
Key | Type | Description |
balance | Uint128 | Amount of token balance |
Gets information for the token.
Rust
JSON
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum Cw20QueryMsg {
TokenInfo {}
}
Key | Type | Description |
| | |
#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)]
pub struct TokenInfoResponse {
pub name: String,
pub symbol: String,
pub decimals: u8,
pub total_supply: Uint128,
}
Key | Type | Description |
name | String | Name of token |
symbol | String | Symbol of token |
decimals | u8 | Number of decimals of token |
total_supply | Uint128 | Total minted supply of token |
Gets information for the token minter.
Rust
JSON
#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)]
#[serde(rename_all = "snake_case")]
pub enum Cw20QueryMsg {
Minter {}
}
Key | Type | Description |
| | |
#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)]
pub struct MinterResponse {
pub minter: String,
pub cap: Option<Uint128>,
}
Key | Type | Description |
minter | String | Address of token minter |
cap * | Uint128 | Maximum number of mintable tokens |
Gets allowance information for the specified owner and spender.
Rust
JSON
#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)]
#[serde(rename_all = "snake_case")]
pub enum Cw20QueryMsg {
Allowance {
owner: String,
spender: String,
}
}
Key | Type | Description |
owner | String | Address of owner |
spender | String | Address of spender |
#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug, Default)]
pub struct AllowanceResponse {
pub allowance: Uint128,
pub expires: Expiration,
}
#[derive(Serialize, Deserialize, Clone, Copy, PartialEq, JsonSchema, Debug)]
#[serde(rename_all = "snake_case")]
pub enum Expiration {
AtHeight(u64),
AtTime(Timestamp),
Never {},
}
Key | Type | Description |
allowance | String | Amount of owner's tokens spender is allowed to spend |
expires | Expiration | Information on when this allowance expires |
Key | Type | Description |
AtHeight | u64 | Allowance expires at specified block height |
AtTime | Timestamp |