
# 合约结构
AssemblyScript语言合约主要包括index.ts和contract.ts两个文件，其中index.ts为开发智能合约文件(contract.ts)依赖的合约SDK，合约涉及的业务相关开发仅在contract.ts文件，智能合约文件contract.ts需要根据实际业务进行开发。
- 合约SDK(index.ts)主要结构如下：
```
// 引入智能合约文件  
import { invoke, init } from "./contract";
// 合约的初始化（wasm_init）接口。包含合约文件的init()接口，合约启动时，需要首先执行且只需要执行一次的逻辑放到合约文件init()接口中。
export function wasm_init(buffer_offset: i32, size: i32):void{
    // 实际调用合约文件的init()接口
}  
// 合约被调用（wasm_invoke）接口。包含合约文件的invoke()接口，供合约使用者通过SDK的wasm_invoke接口调用。
export function wasm_invoke(buffer_offset: i32, size: i32):void{
    // 实际调用合约文件的invoke()接口
}
// 合约被调用（wasm_prepare）接口，保持为空即可。
export function wasm_prepare():void{
}
```
- 智能合约文件(contract.ts)主要结构如下：
```
// 引入合约SDK方法  
import { FuncName, smlog, Str2ArrayBuffer, Parameters, PutKV, ArrayBuffer2Str, GetKV, DelKV, MakeErrRes,MakeSuccessRes, Response,IteratorNew, IteValue, IteKey, IteNext, IteratorFree } from "./index"
// 智能合约的初始化（init）接口的实现。
export function init(txid:string):Response{
}
// 智能合约被调用（invoke）接口的实现。
export function invoke(txid:string):Response{
}
```
