11 个稳定版本
5.2.0 | 2024 年 3 月 8 日 |
---|---|
4.0.4 | 2024 年 2 月 21 日 |
4.0.2 | 2023 年 10 月 24 日 |
3.0.4 | 2023 年 8 月 18 日 |
3.0.1 | 2023 年 3 月 28 日 |
#307 in 神奇豆子
434 每月下载量
2MB
36K SLoC
Rust Terra Proto
用于与 Terra 区块链交互的客户端。可以直接与 CosmWasm 智能合约一起使用,例如在 Alliance Hub 上,或者从外部区块链 API 使用。
CosmWasm 中的使用
将 terra-proto-rs 集成到您的智能合约的 Cargo.toml 中,并将 default-features 设置为 false 以避免导入可能导致您的智能合约失败的库
terra-proto-rs = {version = "5.0.0", default-features = false}
CosmWasm 可用模型
在构建智能合约时,您可以使用以下消息,无需解析结构体,只需导入并使用即可
联盟模块
/alliance.alliance.MsgCreateAllianceProposal
/alliance.alliance.MsgUpdateAllianceProposal
/alliance.alliance.MsgDeleteAllianceProposal
/alliance.alliance.MsgCreateAlliance
/alliance.alliance.MsgUpdateAlliance
/alliance.alliance.MsgDeleteAlliance
/alliance.alliance.MsgUpdateParams
/alliance.alliance.MsgDelegate
/alliance.alliance.MsgUndelegate
/alliance.alliance.MsgRedelegate
/alliance.alliance.MsgClaimDelegationRewards
Cosmos SDK 基础模块
/cosmos.auth.v1beta1.BaseAccount
/cosmos.auth.v1beta1.ModuleAccount
/cosmos.authz.v1beta1.MsgGrant
/cosmos.authz.v1beta1.MsgExec
/cosmos.authz.v1beta1.MsgRevoke
/cosmos.authz.v1beta1.MsgUpdateParams
/cosmos.authz.v1beta1.MsgVerifyInvariant
/cosmos.authz.v1beta1.UpdateParams
/cosmos.distribution.v1beta1.MsgSetWithdrawAddress
/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward
/cosmos.distribution.v1beta1.MsgWithdrawValidatorCommission
/cosmos.distribution.v1beta1.MsgFundCommunityPool
/cosmos.distribution.v1beta1.MsgCommunityPoolSpend
/cosmos.distribution.v1beta1.MsgUpdateParams
/cosmos.distribution.v1beta1.MsgSubmitEvidence
/cosmos.feegrant.v1beta1.MsgGrantAllowance
/cosmos.feegrant.v1beta1.MsgRevokeAllowance
/cosmos.feegrant.v1beta1.BasicAllowance
/cosmos.feegrant.v1beta1.PeriodicAllowance
/cosmos.feegrant.v1beta1.AllowedMsgAllowance
/cosmos.gov.v1.MsgSubmitProposal
/cosmos.gov.v1.MsgExecLegacyContent
/cosmos.gov.v1.MsgVote
/cosmos.gov.v1.MsgVoteWeighted
/cosmos.gov.v1.MsgDeposit
/cosmos.gov.v1.MsgUpdateParams
/cosmos.mint.v1beta1.MsgUpdateParams
/cosmos.slashing.v1beta1.MsgUnjail
/cosmos.staking.v1beta1.MsgUpdateParams
/cosmos.staking.v1beta1.MsgCreateValidator
/cosmos.staking.v1beta1.MsgEditValidator
/cosmos.staking.v1beta1.MsgDelegate
/cosmos.staking.v1beta1.MsgUndelegate
/cosmos.staking.v1beta1.MsgBeginRedelegate
/cosmos.staking.v1beta1.MsgCancelUnbondingDelegation
/cosmos.vesting.v1beta1.MsgCreateVestingAccount
/cosmos.vesting.v1beta1.MsgCreateVestingAccount
/cosmos.vesting.v1beta1.MsgCreateVestingAccount
/cosmos.vesting.v1beta1.MsgCreateVestingAccount
CosmWasm
/cosmwasm.wasm.v1.MsgStoreCode
/cosmwasm.wasm.v1.MsgInstantiateContract
/cosmwasm.wasm.v1.MsgInstantiateContract2
/cosmwasm.wasm.v1.MsgExecuteContract
/cosmwasm.wasm.v1.MsgMigrateContract
/cosmwasm.wasm.v1.MsgUpdateAdmin
/cosmwasm.wasm.v1.MsgClearAdmin
/cosmwasm.wasm.v1.MsgUpdateInstantiateConfig
/cosmwasm.wasm.v1.MsgUpdateParams
/cosmwasm.wasm.v1.MsgSudoContract
/cosmwasm.wasm.v1.MsgPinCodes
/cosmwasm.wasm.v1.MsgUnpinCodes
/cosmwasm.wasm.v1.MsgStoreAndInstantiateContract
IBC
/ibc.applications.transfer.v1.MsgTransfer
/ibc.applications.fee.v1.MsgRegisterPayee
/ibc.applications.fee.v1.MsgRegisterCounterpartyPayee
/ibc.applications.fee.v1.MsgPayPacketFee
/ibc.applications.fee.v1.MsgPayPacketFeeAsync
/ibc.applications.interchain_accounts.v1.MsgRegisterInterchainAccount
/ibc.applications.interchain_accounts.v1.MsgSendTx
/ibc.core.channel.v1.MsgChannelCloseConfirm
/ibc.core.channel.v1.MsgChannelOpenInit
/ibc.core.channel.v1.MsgChannelOpenTry
/ibc.core.channel.v1.MsgChannelOpenAck
/ibc.core.channel.v1.MsgChannelOpenConfirm
/ibc.core.channel.v1.MsgChannelCloseInit
/ibc.core.channel.v1.MsgRecvPacket
/ibc.core.channel.v1.MsgTimeout
/ibc.core.channel.v1.MsgTimeoutOnClose
/ibc.core.channel.v1.MsgAcknowledgement
/ibc.core.client.v1.MsgCreateClient
/ibc.core.client.v1.MsgUpdateClient
/ibc.core.client.v1.MsgUpgradeClient
/ibc.core.client.v1.MsgSubmitMisbehaviour
/ibc.core.connection.v1.MsgConnectionOpenInit
/ibc.core.connection.v1.MsgConnectionOpenTry
/ibc.core.connection.v1.MsgConnectionOpenAck
/ibc.core.connection.v1.MsgConnectionOpenConfirm
Token Factory Module
/osmosis.tokenfactory.v1beta1.MsgUpdateParams
/osmosis.tokenfactory.v1beta1.MsgCreateDenom
/osmosis.tokenfactory.v1beta1.MsgMint
/osmosis.tokenfactory.v1beta1.MsgBurn
/osmosis.tokenfactory.v1beta1.MsgChangeAdmin
/osmosis.tokenfactory.v1beta1.MsgSetDenomMetadata
/osmosis.tokenfactory.v1beta1.MsgSetBeforeSendHook
/osmosis.tokenfactory.v1beta1.MsgForceTransfer
POB Module
/pob.builder.v1.MsgAuctionBid
/pob.builder.v1.MsgUpdateParams
POB Module
/juno.feeshare.v1.MsgRegisterFeeShare
/juno.feeshare.v1.MsgUpdateFeeShare
/juno.feeshare.v1.MsgCancelFeeShare
/juno.feeshare.v1.MsgUpdateParams
示例
从Alliance Protocol的Alliance Hub智能合约中提取和简化了代表函数的代码片段,见Alliance Hub
fn alliance_delegate(
deps: DepsMut,
env: Env,
info: MessageInfo,
msg: AllianceDelegateMsg,
) -> Result<Response, ContractError> {
let mut msgs: Vec<CosmosMsg<Empty>> = vec![];
for delegation in msg.delegations {
///
/// Using MsgDelegate from alliance
///
let delegate_msg = MsgDelegate {
amount: Some(Coin {
denom: config.alliance_token_denom.clone(),
amount: delegation.amount.to_string(),
}),
delegator_address: env.contract.address.to_string(),
validator_address: delegation.validator.to_string(),
};
///
// Creating the Stargate message to be routed on the alliance module
// from terras blockchain on Response::message
///
msgs.push(CosmosMsg::Stargate {
type_url: "/alliance.alliance.MsgDelegate".to_string(),
value: Binary::from(delegate_msg.encode_to_vec()),
});
}
Ok(Response::new()
.add_attributes(vec![("action", "alliance_delegate")])
.add_messages(msgs))
}
依赖项
约7-10MB
约210K SLoC