Interface ContractProvider
export interface ContractProvider { getState(): Promise<ContractState>; get(name: string, args: TupleItem[]): Promise<ContractGetMethodResult>; external(message: Cell): Promise<void>; internal(via: Sender, args: { value: bigint | string; bounce?: Maybe<boolean>; sendMode?: SendMode; body?: Maybe<Cell | string>; }): Promise<void>; }
这段
ContractProvider
接口代码实现了在 TON 区块链 上与智能合约进行交互的功能。具体来说,它定义了一些用于与智能合约的状态、方法和交易交互的核心操作。以下是接口中的方法及其功能解释:1. getState(): Promise<ContractState>;
- 功能: 获取智能合约的当前状态。
- 解释:
- 返回一个
Promise
,该Promise
解析为智能合约的状态ContractState
。 - 合约的状态通常包括合约是否已经部署、合约的账户余额、以及合约在区块链上的当前状态信息。
2. get(name: string, args: TupleItem[]): Promise<ContractGetMethodResult>;
- 功能: 调用智能合约的只读方法(
get
方法)。
- 解释:
- 这个方法允许外部查询合约的状态或获取信息。
name
参数代表合约中某个方法的名称,args
参数是调用该方法时传递的参数(TupleItem[]
)。- 返回的
Promise
解析为ContractGetMethodResult
,通常包括调用结果或返回值。
3. external(message: Cell): Promise<void>;
- 功能: 发送外部消息给智能合约。
- 解释:
- 这个方法用于通过外部消息与合约进行交互。外部消息通常是通过某些预定规则发送的,并可能触发合约的某些功能。
- 参数
message
是Cell
类型,它表示发送的消息内容。 - 返回
Promise<void>
,表示消息已成功发送,不需要返回值。
4. internal(via: Sender, args: { value: bigint | string; bounce?: Maybe<boolean>; sendMode?: SendMode; body?: Maybe<Cell | string>; }): Promise<void>;
- 功能: 发送内部交易到智能合约。
- 解释:
- 这是智能合约之间交易的核心方法,通过它可以发送 TON(区块链的原生货币)到合约,或者触发合约的某个操作。
via
参数代表发送交易的账户(Sender
),通常是代表发起交易的用户。args
参数是一个对象,包含:value
: 发送的金额,类型可以是bigint
或string
。bounce?
: 可选的boolean
,表示是否在交易失败时退回资金(默认是true
)。sendMode?
: 可选的SendMode
,决定交易的行为,比如支付 gas 费用的方式。body?
: 可选的消息主体,可以是Cell
或string
类型,包含执行交易的详细指令或数据。- 返回
Promise<void>
,表示交易已成功发起。
总体总结:
- 该接口定义了与 TON 智能合约交互的核心方法。它允许外部与合约的状态进行交互,调用合约的方法,发送外部消息,以及发起内部交易。
- 在实际的合约操作中,开发者通过实现该接口,能够从区块链上获取智能合约的状态、调用合约的特定方法(如查询账户余额或获取数据),以及与合约进行交易(如支付或执行合约方法)。