(CN)TON Interface Map/接口查询
😃

(CN)TON Interface Map/接口查询

Tags
FunC
Published
Author
JAY

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>;

  • 功能: 发送外部消息给智能合约。
  • 解释:
    • 这个方法用于通过外部消息与合约进行交互。外部消息通常是通过某些预定规则发送的,并可能触发合约的某些功能。
    • 参数 messageCell 类型,它表示发送的消息内容。
    • 返回 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: 发送的金额,类型可以是 bigintstring
      • bounce?: 可选的 boolean,表示是否在交易失败时退回资金(默认是 true)。
      • sendMode?: 可选的 SendMode,决定交易的行为,比如支付 gas 费用的方式。
      • body?: 可选的消息主体,可以是 Cellstring 类型,包含执行交易的详细指令或数据。
    • 返回 Promise<void>,表示交易已成功发起。

总体总结:

  • 该接口定义了与 TON 智能合约交互的核心方法。它允许外部与合约的状态进行交互,调用合约的方法,发送外部消息,以及发起内部交易。
  • 在实际的合约操作中,开发者通过实现该接口,能够从区块链上获取智能合约的状态、调用合约的特定方法(如查询账户余额或获取数据),以及与合约进行交易(如支付或执行合约方法)。