diff --git a/api-reference/get-started.mdx b/api-reference/get-started.mdx deleted file mode 100644 index 2047a2d..0000000 --- a/api-reference/get-started.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: API Reference -description: "Complete API documentation for building on TAC" ---- - -TAC provides comprehensive API access through three complementary sets of endpoints: standard EVM JSON-RPC APIs for full Ethereum compatibility, TAC-specific APIs for cross-chain functionality, and Safe APIs for tracking transactions sent via Safe smart contracts. - -This multi-layered approach ensures that existing Ethereum tools work seamlessly while providing access to TAC's unique hybrid dApp capabilities and Safe transaction monitoring. - -## API Categories - - - - Cross-Chain Functionality: TAC-specific endpoints for asset bridging, - transaction tracking, sequencer status, and hybrid dApp operations. - - - - Standard JSON-RPC: Complete Ethereum JSON-RPC compatibility for accounts, - transactions, contracts, block data, and blockchain info. - - - - Safe Transaction Tracking: APIs to keep track of transactions sent via Safe smart contracts. - - - -## API Usage - -Most developers primarily use **TON Adapter APIs** and **EVM APIs** for building applications on TAC. The **Safe APIs** provide specialized functionality for monitoring Safe smart contract transactions. diff --git a/api-reference/ton-adapter/openapi.yaml b/api-reference/ton-adapter/openapi.yaml deleted file mode 100644 index 4fce482..0000000 --- a/api-reference/ton-adapter/openapi.yaml +++ /dev/null @@ -1,790 +0,0 @@ -openapi: 3.0.1 -info: - title: TON Adapter API - description: TON Adapter API for transaction tracking and simulation on TAC -servers: - - url: https://data.spb.tac.build/ - - url: https://data.tac.build/ -paths: - /status: - post: - tags: - - Status - summary: Get status - description: Get the status of an operation by its Operation ID - requestBody: - description: Request Body - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.OperationIdsParams" - required: true - responses: - "200": - description: Status of the operations - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.GetStatusesResponse" - "400": - description: Invalid query parameters - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.Error" - "404": - description: Operation ID not found - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.Error" - "500": - description: Internal error - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.Error" - x-codegen-request-body-name: body - - /operation-type: - get: - tags: - - Status - summary: Get operation type - description: Get type of transaction - parameters: - - name: operationId - in: query - description: Operation ID - required: true - schema: - type: string - responses: - "200": - description: Type of the operation - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.GetOperationTypeResponse" - "400": - description: Invalid query parameters - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.Error" - "404": - description: Operation ID not found - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.Error" - "500": - description: Internal error - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.Error" - - /operation-ids: - get: - tags: - - Operations - summary: Get Operation IDs using filters - description: Returns operation IDs that satisfy certain filters - parameters: - - name: from - in: query - description: Lower time bound of operation (Unix timestamp) - required: true - schema: - type: number - - name: till - in: query - description: Greater time bound of operation (Unix timestamp) - required: true - schema: - type: number - - name: limit - in: query - description: The maximum number of items to return. Default is 100 - schema: - type: number - - name: offset - in: query - description: The number of items to skip before starting to collect the result set. Default is 0. - schema: - type: number - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.ArrayResponse-api_types_OperationIdWithTimestamp" - "400": - description: Invalid query parameters - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.Error" - "500": - description: Internal error - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.Error" - - /operation-ids-by-shards-keys: - post: - tags: - - Operations - summary: Get Operation IDs by shardsKeys - description: Returns operation IDs that satisfy certain filters - requestBody: - description: Request body - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.ShardsKeysParams" - required: true - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.OperationIdsByShardsKeysResponse" - "400": - description: Invalid body parameters - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.Error" - "404": - description: Data not found - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.Error" - "500": - description: Internal error - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.Error" - x-codegen-request-body-name: body - - /stage-profiling: - post: - tags: - - Time profiling - summary: Get stage profiling - description: Retrieves time information for every stage of transaction based on operation ID - requestBody: - description: Request body - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.OperationIdsParams" - required: true - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.StageProfilingResponse" - "400": - description: Invalid body parameters - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.Error" - "404": - description: Data not found - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.Error" - "500": - description: Internal error - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.Error" - x-codegen-request-body-name: body - - /tac/observer/is-message-collected: - get: - tags: - - Observer - summary: Check if merkle message is collected - description: Check if the TAC MerkleMsg is collected. - parameters: - - name: operationId - in: query - description: Operation ID - required: true - schema: - type: string - responses: - "200": - description: Message is collected - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.GetStatusResponse" - "400": - description: Invalid query parameters - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.StringResponse" - "404": - description: Operation ID not found - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.Error" - "500": - description: Internal error - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.Error" - - /tac/observer/is-message-executed: - get: - tags: - - Observer - summary: Check if Merkle Message is Executed - description: Check if the Merkle message is executed in the TAC chain. - parameters: - - name: operationId - in: query - description: Operation ID - required: true - schema: - type: string - responses: - "200": - description: Message is executed - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.GetStatusResponse" - "400": - description: Invalid query parameters - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.Error" - "404": - description: Operation ID not found - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.Error" - "500": - description: Internal error - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.Error" - - /tac/observer/is-message-included-in-consensus: - get: - tags: - - Observer - summary: Check if Merkle Root is Set - description: Check if the Merkle root is set in the TAC chain. - parameters: - - name: operationId - in: query - description: Operation ID - required: true - schema: - type: string - responses: - "200": - description: Merkle root is set - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.GetStatusResponse" - "400": - description: Invalid query parameters - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.Error" - "404": - description: Operation ID not found - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.Error" - "500": - description: Internal error - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.Error" - - /tac/operation-id: - get: - tags: - - Operations - summary: Get Operation ID - description: Returns a unique operationId to track the entire path of a transaction. All parameters are fields of the transactionLinker structure in the SDK, which you set when sending a transaction. - parameters: - - name: transactionHash - in: query - description: TAC transaction hash - required: true - schema: - type: string - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.TACOperationIdResponse" - "400": - description: Invalid query parameters - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.Error" - "500": - description: Internal error - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.Error" - - /tac/simulator/simulate-message: - post: - tags: - - Simulator - summary: Simulate TAC message - description: Simulates execution of an TAC call from TON - requestBody: - description: Simulation parameters - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.SimulateMessageTACParams" - required: true - responses: - "200": - description: TAC simulation response - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.TACSimulationResponse" - "400": - description: Bad request - invalid parameters - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.Error" - "500": - description: Internal error - content: - application/json: - schema: - $ref: "#/components/schemas/api_types.Error" - x-codegen-request-body-name: request - -components: - schemas: - api_types.ArrayResponse-api_types_OperationIdWithTimestamp: - type: object - properties: - response: - type: array - items: - $ref: "#/components/schemas/api_types.OperationIdWithTimestamp" - - api_types.BlockchainType: - type: string - enum: - - TAC - - TON - x-enum-varnames: - - TAC - - TON - - api_types.EVMTokenAmountResult: - type: object - properties: - amount: - type: string - tokenAddress: - type: string - - api_types.Error: - type: object - properties: - error: - type: string - - api_types.ExecutionStages: - type: object - properties: - collectedInTAC: - $ref: "#/components/schemas/api_types.ProfilingStageData" - collectedInTON: - $ref: "#/components/schemas/api_types.ProfilingStageData" - executedInTAC: - $ref: "#/components/schemas/api_types.ProfilingStageData" - executedInTON: - $ref: "#/components/schemas/api_types.ProfilingStageData" - includedInTACConsensus: - $ref: "#/components/schemas/api_types.ProfilingStageData" - includedInTONConsensus: - $ref: "#/components/schemas/api_types.ProfilingStageData" - operationType: - $ref: "#/components/schemas/api_types.OperationType" - - api_types.FeeParamsResult: - type: object - properties: - currentBaseFee: - type: string - isEip1559: - type: boolean - suggestedGasPrice: - type: string - suggestedGasTip: - type: string - - api_types.GetOperationTypeResponse: - type: object - properties: - response: - $ref: "#/components/schemas/api_types.OperationType" - - api_types.GetStatusResponse: - type: object - properties: - response: - $ref: "#/components/schemas/api_types.StatusResult" - - api_types.GetStatusesResponse: - type: object - properties: - response: - type: object - additionalProperties: - $ref: "#/components/schemas/api_types.StatusResult" - - api_types.GetTONOperationIdParams: - required: - - caller - - shardsKey - type: object - properties: - caller: - type: string - shardCount: - type: integer - shardsKey: - type: string - timestamp: - type: integer - - api_types.IntResponse: - type: object - properties: - response: - type: integer - - api_types.NoteInfo: - type: object - properties: - content: - type: string - errorName: - type: string - internalBytesError: - type: string - internalMsg: - type: string - - api_types.OperationIdWithLogIndex: - type: object - properties: - logIndex: - type: integer - operationId: - type: string - - api_types.OperationIdWithTimestamp: - type: object - properties: - operationId: - type: string - timestamp: - type: integer - - api_types.OperationIdsByShardsKeysResponse: - type: object - properties: - response: - type: object - additionalProperties: - $ref: "#/components/schemas/api_types.OperationIdsByShardsKeysResult" - - api_types.OperationIdsByShardsKeysResult: - type: object - properties: - operationIds: - type: array - items: - type: string - - api_types.OperationIdsParams: - required: - - operationIds - type: object - properties: - operationIds: - type: array - items: - type: string - - api_types.OperationType: - type: string - enum: - - PENDING - - TON-TAC-TON - - ROLLBACK - - TON-TAC - - TAC-TON - - UNKNOWN - x-enum-varnames: - - PENDING - - TON_TAC_TON - - ROLLBACK - - TON_TAC - - TAC_TON - - UNKNOWN - - api_types.OutMessageResult: - type: object - properties: - callerAddress: - type: string - operationId: - type: string - payload: - type: string - shardsKey: - type: integer - targetAddress: - type: string - tokensBurned: - type: array - items: - $ref: "#/components/schemas/api_types.EVMTokenAmountResult" - tokensLocked: - type: array - items: - $ref: "#/components/schemas/api_types.EVMTokenAmountResult" - - api_types.ProfilingStageData: - type: object - properties: - exists: - type: boolean - stageData: - $ref: "#/components/schemas/api_types.StageData" - - api_types.ShardsKeysParams: - required: - - caller - - shardsKeys - type: object - properties: - caller: - type: string - shardsKeys: - type: array - items: - type: string - - api_types.SimulateMessageTACParams: - required: - - shardsKey - - tacCallParams - - tonAssets - - tonCaller - type: object - properties: - executorAddress: - type: string - extraData: - type: string - feeAssetAddress: - type: string - shardsKey: - type: string - tacCallParams: - $ref: "#/components/schemas/api_types.TACCallParams" - tonAssets: - type: array - items: - $ref: "#/components/schemas/api_types.TVMAssetAmount" - tonCaller: - type: string - - api_types.Stage: - type: string - enum: - - start - - collectedInTAC - - includedInTACConsensus - - executedInTAC - - collectedInTON - - includedInTONConsensus - - executedInTON - x-enum-varnames: - - START - - COLLECTED_IN_TAC - - INCLUDED_IN_TAC_CONSENSUS - - EXECUTED_IN_TAC - - COLLECTED_IN_TON - - INCLUDED_IN_TON_CONSENSUS - - EXECUTED_IN_TON - - api_types.StageData: - type: object - properties: - note: - $ref: "#/components/schemas/api_types.NoteInfo" - success: - type: boolean - timestamp: - type: integer - transactions: - type: array - items: - $ref: "#/components/schemas/api_types.TransactionData" - - api_types.StageProfilingResponse: - type: object - properties: - response: - type: object - additionalProperties: - $ref: "#/components/schemas/api_types.ExecutionStages" - - api_types.StatusResult: - type: object - properties: - note: - $ref: "#/components/schemas/api_types.NoteInfo" - stage: - $ref: "#/components/schemas/api_types.Stage" - success: - type: boolean - timestamp: - type: integer - transactions: - type: array - items: - $ref: "#/components/schemas/api_types.TransactionData" - - api_types.StringResponse: - type: object - properties: - response: - type: string - - api_types.TACCallParams: - required: - - target - type: object - properties: - arguments: - type: string - methodName: - type: string - target: - type: string - - api_types.TACOperationIdResponse: - type: object - properties: - response: - type: array - items: - $ref: "#/components/schemas/api_types.OperationIdWithLogIndex" - - api_types.TACSimulationDebugInfoResult: - type: object - properties: - blockNumber: - type: integer - callData: - type: string - from: - type: string - to: - type: string - - api_types.TACSimulationResponse: - type: object - properties: - response: - $ref: "#/components/schemas/api_types.TACSimulationResult" - - api_types.TACSimulationResult: - type: object - properties: - debugInfo: - $ref: "#/components/schemas/api_types.TACSimulationDebugInfoResult" - estimatedGas: - type: integer - estimatedJettonFeeAmount: - type: string - feeParams: - $ref: "#/components/schemas/api_types.FeeParamsResult" - message: - type: string - outMessages: - type: array - items: - $ref: "#/components/schemas/api_types.OutMessageResult" - simulationError: - type: string - simulationStatus: - type: boolean - - api_types.TVMAssetAmount: - required: - - amount - type: object - properties: - amount: - type: string - tokenAddress: - type: string - - api_types.TransactionData: - type: object - properties: - blockchainType: - $ref: "#/components/schemas/api_types.BlockchainType" - hash: - type: string - - securitySchemes: - BasicAuth: - type: http - scheme: basic - -x-original-swagger-version: "2.0" diff --git a/api/overview.mdx b/api/overview.mdx new file mode 100644 index 0000000..668b5da --- /dev/null +++ b/api/overview.mdx @@ -0,0 +1,26 @@ +--- +title: Overview +--- + +Alongside TypeScript SDK and Python SDK +TAC's protocol public API is provided for transaction tracking, stage profiling, simulating EVM calls on the TAC blockchain, and other needs. + +## API Schemas + + + + + + + + + + diff --git a/apps/overview.mdx b/apps/overview.mdx new file mode 100644 index 0000000..be3fa7c --- /dev/null +++ b/apps/overview.mdx @@ -0,0 +1,39 @@ +--- +title: Overview +description: Explore reference implementations to accelerate your own dApp development +--- + + + + The codebase of famous bluechip dApp. Try it as [Telegram Mini App](https://t.me/CurveAppBot) + + + + The codebase of perpetual trading dApp with gamified UI. Try it [here](https://hooked.tac.build/) + + + + Live hybrid dApps list, not an extensive one, more are popping up! + + + + Starter template code to jumpstart your local development + + + diff --git a/audit-reports/audit.mdx b/audit-reports/audit.mdx new file mode 100644 index 0000000..aedacf8 --- /dev/null +++ b/audit-reports/audit.mdx @@ -0,0 +1,58 @@ +--- +title: Overview +description: The TAC ecosystem undergoes security assessments by industry-leading firms to ensure the safety of our infrastructure and user assets. +--- + +## Core Blockchain +These audits cover the foundational TAC blockchain components and the Cosmos EVM integration. + + + + Halborn + + + Halborn + + + +## Bridges +Bridge audits focus on the secure movement of assets between chains, specifically verifying the logic for USDT flow between TON, Ethereum, and TAC. + + + + Quantstamp + + + Quantstamp + + + +## TON-TAC Proxies +These reports evaluate the proxy architecture that allows dApps on TAC to be accessible from the TON blockchain. + + + + Quantstamp + + + Quantstamp + + + Quantstamp + + + Quantstamp + + + Quantstamp + + + +## Smart Accounts +This audit validates the Smart Account primitives, which enable the creation of programmable user wallets on the EVM side. + + + + Quantstamp + + \ No newline at end of file diff --git a/build/network-info/index.mdx b/build/network-info/index.mdx index a85e1bc..11754eb 100644 --- a/build/network-info/index.mdx +++ b/build/network-info/index.mdx @@ -7,11 +7,6 @@ This page is updated regularly as the network information is updated. TAC EVM is a standard EVM chain based on Cosmos with native EVM integration. These are the chain parameters for TAC networks: - - TAC Turin has been deprecated. Please use the Saint Petersburg Testnet for - your nodes and applications. - - ## Network Configuration @@ -26,8 +21,9 @@ TAC EVM is a standard EVM chain based on Cosmos with native EVM integration. The | **Currency Symbol** | TAC | | **Block Explorer** | [https://explorer.tac.build](https://explorer.tac.build) | | **Fee Schema** | EIP-1559 | - - ### Quick Add to Wallet + | **Block Time** | < 2 seconds | + + ### Quick Add to Wallet ```json { @@ -44,8 +40,8 @@ TAC EVM is a standard EVM chain based on Cosmos with native EVM integration. The ``` - - **Saint Petersburg Testnet** - Current recommended testnet for development + + **TAC Saint Petersburg Testnet** - Current recommended testnet for development | Parameter | Value | |-----------|--------| @@ -54,11 +50,11 @@ TAC EVM is a standard EVM chain based on Cosmos with native EVM integration. The | **Chain ID** | `2391` | | **Currency Symbol** | TAC | | **Block Explorer** | [https://spb.explorer.tac.build](https://spb.explorer.tac.build) | - | **Faucet** | [https://spb.faucet.tac.build](https://spb.faucet.tac.build) | | **Fee Schema** | EIP-1559 | - | **Block Time** | 2 seconds | - - ### Quick Add to Wallet + | **Block Time** | < 2 seconds | + | **Faucet** | [https://spb.faucet.tac.build](https://spb.faucet.tac.build) | + + ### Quick Add to Wallet ```json { @@ -78,26 +74,8 @@ TAC EVM is a standard EVM chain based on Cosmos with native EVM integration. The ## Getting Testnet Tokens - - - Go to [https://spb.faucet.tac.build](https://spb.faucet.tac.build) to access - the Saint Petersburg testnet faucet. - - - - Connect your Ethereum wallet (MetaMask, etc.) and ensure you're on the Saint - Petersburg testnet. - - - - Request testnet TAC tokens for gas fees and testing your applications. - - - - Use the tokens to deploy contracts and test your hybrid dApps on the - testnet. - - +- Get `TAC` on [TAC Testnet Faucet](https://spb.faucet.tac.build) +- Get `TON` on [TON Testnet Faucet](https://t.me/testgiver_ton_bot) ## Common Integration Issues diff --git a/build/smart-contracts/tools/hardhat.mdx b/build/smart-contracts/tools/hardhat.mdx index fcbecb9..8b9d63c 100644 --- a/build/smart-contracts/tools/hardhat.mdx +++ b/build/smart-contracts/tools/hardhat.mdx @@ -3,7 +3,7 @@ title: Hardhat description: "Deploy, test, and verify Solidity contracts on TAC using Hardhat - the complete development environment" --- -TAC EVM Layer provides full compatibility with Hardhat, Ethereum's most popular development framework. Deploy your existing Solidity contracts without modification, test, and verify contracts on the block explorer. +TAC EVM Layer provides full compatibility with Hardhat, Ethereum's most popular development framework. Deploy your existing Solidity contracts without modification, test, and verify contracts on the [Block Explorer](/explorer/overview). ## Installation & Setup diff --git a/build/tooling/contract-addresses.mdx b/build/tooling/contract-addresses.mdx index 77206e7..c779373 100644 --- a/build/tooling/contract-addresses.mdx +++ b/build/tooling/contract-addresses.mdx @@ -1,78 +1,60 @@ --- -title: Contract Addresses -description: "Contract addresses for TAC Network" +title: Core Contracts +description: "The page lists the core TAC Protocol's contract addresses used in TON and TAC blockchains" --- -This page lists all the contract addresses used in TAC for both TVM and EVM networks. - - - These addresses are for TON Adapter V2, which was released on 13th March 2025. - - -## TVM Networks +## TON Adapter addresses - - **TVM Mainnet** - + | Contract Name | Address | |---------------|---------| - | **CCL** | `EQAgpWmO8nBUrmfOOldIEmRkLEwV-IIfVAlJsphYswnuL80R` | - | **JettonProxy** | `EQAChAswsPNsU2k3A5ZDO_cfhWknCGS6WMG2Jz15USMwxMdw` | + | **Cross Chain Layer** | `EQAgpWmO8nBUrmfOOldIEmRkLEwV-IIfVAlJsphYswnuL80R` | | **Settings** | `EQBpUijPLYC9dcmw8Y-d23E9iX-2HBCupc5oqoYgXnORSRmi` | - | **NFTProxy** | `EQDDqOCQr6EPBmJnFF-dDKuNFLctG-SEYFhz66m17uisfLXh` | - + | **Jetton Proxy** | `EQAChAswsPNsU2k3A5ZDO_cfhWknCGS6WMG2Jz15USMwxMdw` | + | **NFT Proxy** | `EQDDqOCQr6EPBmJnFF-dDKuNFLctG-SEYFhz66m17uisfLXh` | - - - **TVM Testnet** - + | Contract Name | Address | |---------------|---------| - | **CCL** | `EQAVGclLM4b0fb4pYRbS-OUUJiXlaTk8C0D1IueAzx6XgGo0` | - | **JettonProxy** | `EQAgBa6tNOqswtuRggf47BIO809mxHUgkkk5EYmfISDMJ_Zw` | + | **Cross Chain Layer** | `EQAVGclLM4b0fb4pYRbS-OUUJiXlaTk8C0D1IueAzx6XgGo0` | | **Settings** | `EQAf49rSyJGxh_OjoWJYwzpZCvVQdlYVNVy-DN3awXg8l5ZJ` | - | **NFTProxy** | `EQBfBBdZW4mowc1TRL3gQ07fQ-T3vvqOLa7yExRZmbR75hhJ` | - + | **Jetton Proxy** | `EQAgBa6tNOqswtuRggf47BIO809mxHUgkkk5EYmfISDMJ_Zw` | + | **NFT Proxy** | `EQBfBBdZW4mowc1TRL3gQ07fQ-T3vvqOLa7yExRZmbR75hhJ` | -## EVM Networks +## TAC Adapter addresses - - **EVM Mainnet** - + | Contract Name | Address | |---------------|---------| - | **CrossChainLayer** | `0x9fee01e948353E0897968A3ea955815aaA49f58d` | - | **Consensus** | `0xAe635dE674cFE4aFD179CDE441aBBE6504A20A98` | - | **MerkleTreeUtils** | `0xE11F57B7C650f9FeAcFCb414ab65F5A19bdFCc44` | + | **Cross Chain Layer** | `0x9fee01e948353E0897968A3ea955815aaA49f58d` | | **Settings** | `0x1278fc68146643D7a05baAb1531618613999828D` | + | **Consensus** | `0xAe635dE674cFE4aFD179CDE441aBBE6504A20A98` | + | **Merkle Tree Utils** | `0xE11F57B7C650f9FeAcFCb414ab65F5A19bdFCc44` | + | **Token Utils** | `0x6BE421FEf556c41170Cd3F652ee469837409AAF5` | | **Smart Account Factory** | `0x070820Ed658860f77138d71f74EfbE173775895b` | - | **Smart Account Blueprint** | `0x3913eE8732F9675ACc2a266CbE7FAecc8b86CaCC` | - | **TokenUtils** | `0x6BE421FEf556c41170Cd3F652ee469837409AAF5` | - | **WTAC** | `0xB63B9f0eb4A6E6f191529D71d4D88cc8900Df2C9` | + | **Smart Account Blueprint** | `0xEc94C850F17ab72A31CEa784dFD3ffc8789A9bE4` | + | **Agnostic Proxy** | `0x1198EE17A9108733AbB085fba3AEf8E7A5f0B238` | | **Multicall** | `0xcA11bde05977b3631167028862bE2a173976CA11` | - + | **WTAC** | `0xB63B9f0eb4A6E6f191529D71d4D88cc8900Df2C9` | - - - **EVM Testnet (Saint Petersburg)** - + | Contract Name | Address | |---------------|---------| - | **CrossChainLayer** | `0x4f3b05a601B7103CF8Fc0aBB56d042e04f222ceE` | - | **Consensus** | `0x2BF0030eD6635BCc01aba0D991e1b087877e1cA5` | - | **MerkleTreeUtils** | `0x7c8CDB0Fd5AFD238d8e3782bc3c548859b19BAAb` | + | **Cross Chain Layer** | `0x4f3b05a601B7103CF8Fc0aBB56d042e04f222ceE` | | **Settings** | `0xF52a9A4C747Ce4BED079E54eB074d1C8879021D1` | - | **Smart Account Factory** | `0x510ee99eD721107851D692f761198E3dE4e9310D` | + | **Consensus** | `0x2BF0030eD6635BCc01aba0D991e1b087877e1cA5` | + | **Merkle Tree Utils** | `0x7c8CDB0Fd5AFD238d8e3782bc3c548859b19BAAb` | + | **Token Utils** | `0xB9856463dE80753b0717E3d62DA6236c408734Df` | + | **Smart Account Factory** | `0x5919D1D0D1b36F08018d7C9650BF914AEbC6BAd6` | | **Smart Account Blueprint** | `0xeAB80f5369689a2D142f25E654d9822A7725028B` | - | **TokenUtils** | `0xB9856463dE80753b0717E3d62DA6236c408734Df` | - | **WTAC** | `0xCf61405b7525F09f4E7501fc831fE7cbCc823d4c` | + | **Agnostic Proxy** | `0x4619d0Ed01a66D25F7C83E70C8515897D502cDBF` | | **Multicall** | `0xcA11bde05977b3631167028862bE2a173976CA11` | - + | **WTAC** | `0xCf61405b7525F09f4E7501fc831fE7cbCc823d4c` | diff --git a/core-concepts/components/proxy-apps.mdx b/core-concepts/components/proxy-apps.mdx index c258748..5695cc1 100644 --- a/core-concepts/components/proxy-apps.mdx +++ b/core-concepts/components/proxy-apps.mdx @@ -323,20 +323,3 @@ describe("Proxy Contract Tests", () => { - **Asset Management Testing**: Tests verify that assets are properly locked, minted, burned, and unlocked throughout the cross-chain process. - **Error Scenario Handling**: Testing includes failure cases to ensure proxy contracts handle errors gracefully and protect user assets. - -## What's Next? - -Understanding proxy apps helps you build the interface layer that makes hybrid dApps possible. Explore related concepts to build more sophisticated applications. - - - - Learn how the SDK handles TON-side proxy functionality - - - Dive deeper into message structure and validation - - diff --git a/core-concepts/components/sequencer-network.mdx b/core-concepts/components/sequencer-network.mdx index e3c32fe..3802a6d 100644 --- a/core-concepts/components/sequencer-network.mdx +++ b/core-concepts/components/sequencer-network.mdx @@ -289,24 +289,3 @@ The modular design of the sequencer network allows for future improvements and a - **Enhanced Oracle Integration**: Expanded oracle services during execution - **Scalability Improvements**: Support for more groups, shorter epochs, efficient consensus - **Additional Blockchain Support**: Potential expansion beyond TON and TAC EVM - -## What's Next? - -Understanding the sequencer network helps you appreciate how TAC maintains security and reliability for cross-chain operations. - - - - Learn how sequencers process and validate messages - - - Understand how sequencers handle token operations - - diff --git a/core-concepts/components/tac-evm-layer.mdx b/core-concepts/components/tac-evm-layer.mdx index f12c4e7..34dd1a7 100644 --- a/core-concepts/components/tac-evm-layer.mdx +++ b/core-concepts/components/tac-evm-layer.mdx @@ -232,24 +232,3 @@ TAC EVM Layer includes specialized contracts for managing bridged assets from TO - **Asset Registry**: Maintains the mapping between TON asset addresses and their TAC EVM equivalents. - **Bridge Contracts**: Handle the locking and unlocking of assets as they move between chains. - -## What's Next? - -The TAC EVM Layer provides the execution foundation for hybrid dApps. Understanding how it connects to other TAC components helps you build more effective applications. - - - - Learn how messages flow between TAC EVM Layer and TON - - - Discover how smart contracts receive cross-chain messages - - diff --git a/core-concepts/components/tac-sdk.mdx b/core-concepts/components/tac-sdk.mdx index 6e832b8..f3137b4 100644 --- a/core-concepts/components/tac-sdk.mdx +++ b/core-concepts/components/tac-sdk.mdx @@ -221,18 +221,3 @@ The SDK provides comprehensive error handling that protects user assets and prov assets to users safely, preventing fund loss. - -## Getting Started - - - - Install and configure the TAC SDK in your application - - - Learn how the SDK formats messages for secure delivery - - diff --git a/core-concepts/components/ton-adapter.mdx b/core-concepts/components/ton-adapter.mdx index d6bd5c9..a7934aa 100644 --- a/core-concepts/components/ton-adapter.mdx +++ b/core-concepts/components/ton-adapter.mdx @@ -262,24 +262,3 @@ throughput sufficient for expected demand. - -## What's Next? - -Understanding the TON Adapter's role in message routing helps you build more effective hybrid dApps and proxy contracts. - - - - Learn how smart contracts interface with the TON Adapter - - - Dive deeper into message structure and validation - - diff --git a/core-concepts/cross-chain-operations/asset-bridging.mdx b/core-concepts/cross-chain-operations/asset-bridging.mdx index c4f11d8..b4dc1a1 100644 --- a/core-concepts/cross-chain-operations/asset-bridging.mdx +++ b/core-concepts/cross-chain-operations/asset-bridging.mdx @@ -331,24 +331,3 @@ Developers can integrate asset bridging into their applications using several co - **Batch Operations**: Users can bridge multiple assets in preparation for complex operations. - **Advanced Features**: Manual bridging enables advanced features like pre-positioning assets for better execution. - -## What's Next? - -Understanding asset bridging provides the foundation for exploring how complete transactions flow through TAC's cross-chain system. - - - - Learn how bridging fits into the complete transaction flow - - - Understand how the system ensures bridging security - - diff --git a/core-concepts/cross-chain-operations/cross-chain-messaging.mdx b/core-concepts/cross-chain-operations/cross-chain-messaging.mdx index 5939ef1..b3b5ed8 100644 --- a/core-concepts/cross-chain-operations/cross-chain-messaging.mdx +++ b/core-concepts/cross-chain-operations/cross-chain-messaging.mdx @@ -312,24 +312,3 @@ Understanding the performance characteristics of cross-chain messaging helps dev - -## What's Next? - -Understanding cross-chain messaging and fee structures provides the foundation for exploring specific operational aspects of TAC's hybrid dApp system. - - - - Learn how tokens and assets move securely between chains - - - Dive deeper into the complete transaction processing flow - - diff --git a/core-concepts/cross-chain-operations/message-validation.mdx b/core-concepts/cross-chain-operations/message-validation.mdx index fb50921..25be776 100644 --- a/core-concepts/cross-chain-operations/message-validation.mdx +++ b/core-concepts/cross-chain-operations/message-validation.mdx @@ -311,18 +311,3 @@ Understanding common validation errors helps developers build more robust applic - **Complex Operations**: Multi-step operations require additional validation of operation sequencing and parameter consistency. - **Return Messages**: Messages returning from EVM to TON have specialized validation for burn-and-release operations. - -## What's Next? - -Understanding message validation provides the security foundation for exploring TAC's token economic models and operational patterns. - - - - Learn how different token types are validated and processed - - - diff --git a/core-concepts/cross-chain-operations/transaction-lifecycle.mdx b/core-concepts/cross-chain-operations/transaction-lifecycle.mdx index 08715ee..95a7c5b 100644 --- a/core-concepts/cross-chain-operations/transaction-lifecycle.mdx +++ b/core-concepts/cross-chain-operations/transaction-lifecycle.mdx @@ -394,24 +394,3 @@ async function monitorTransaction(transactionLinker) { - **Background Processing**: Handle long-running transaction monitoring in background processes rather than blocking user interfaces. - **Retry Logic**: Implement appropriate retry logic for temporary network issues while avoiding excessive API usage. - -## What's Next? - -Understanding the complete transaction lifecycle prepares you to explore the specific validation mechanisms that ensure security throughout the process. - - - - Learn how transactions are validated at each stage - - - Explore how different token types are handled throughout the lifecycle - - diff --git a/core-concepts/overview/architecture.mdx b/core-concepts/overview/architecture.mdx index 60a5fe7..10cceef 100644 --- a/core-concepts/overview/architecture.mdx +++ b/core-concepts/overview/architecture.mdx @@ -231,25 +231,6 @@ TAC's architecture provides multiple layers of security across all components: - Merkle proofs validate transaction inclusion - Multiple signature requirements prevent fraud - Asset validation ensures accurate transfers -- Rollback protection for failed transactions +- Rollback provision for failed transactions - -## What's Next? - - - - Learn how this architecture enables truly hybrid applications - - - Explore the cross-chain messaging system in detail - - diff --git a/core-concepts/overview/hybrid-dapps.mdx b/core-concepts/overview/hybrid-dapps.mdx index 514f8fc..23b4f50 100644 --- a/core-concepts/overview/hybrid-dapps.mdx +++ b/core-concepts/overview/hybrid-dapps.mdx @@ -367,24 +367,3 @@ Let's follow a TON user interacting with a hybrid DEX: environments - -## Ready to Build? - -Hybrid dApps represent the future of cross-chain applications - combining the best of both ecosystems while hiding complexity from users. - - - - Learn how the TAC SDK enables hybrid dApp development - - - Understand how proxy contracts bridge TON and EVM - - diff --git a/core-concepts/overview/new.mdx b/core-concepts/overview/new.mdx deleted file mode 100644 index 8b13789..0000000 --- a/core-concepts/overview/new.mdx +++ /dev/null @@ -1 +0,0 @@ - diff --git a/core-concepts/overview/what-is-tac.mdx b/core-concepts/overview/what-is-tac.mdx index e4e9ede..6974dc0 100644 --- a/core-concepts/overview/what-is-tac.mdx +++ b/core-concepts/overview/what-is-tac.mdx @@ -114,44 +114,51 @@ When a TON user interacts with an EVM app, proxy contracts handle all the comple ## Transaction Flow Example -Here's what happens when a TON user swaps tokens on an EVM DEX through TAC's hybrid dApp system: +Here's what happens when a TON user swaps tokens on an EVM DEX through TAC's hybrid dApp system (like [Curve](https://t.me/CurveAppBot)): - - User opens a DEX interface and connects their TON wallet. They select tokens - to swap and approve the transaction. - - - - The TON proxy locks user assets and creates a formatted message containing - swap parameters and destination details. - - - - Sequencer network validates the transaction, forms Merkle trees, and reaches - consensus across multiple groups. - - - - A designated executor submits Merkle proofs to TAC EVM Layer, triggers asset - minting/unlocking, and executes the swap on the target DEX contract via proxy. - - - - Swap completes and new tokens are sent back to the user's TON wallet through - the same secure process. - + + User opens a DEX interface, connects his/her TON wallet, and selects tokens to swap. + + + + The TAC SDK implemented within DEX frontend conveniently encodes required EVM calldata for the upcoming swap on the TAC blockchain + and brings up the prepared transaction for user to approve. + + + + User approves the transaction. + + + + The TON adapter receives user's assets and safely locks them on TON. + + + + Sequencer network finds and validates the transaction, forms Merkle trees, reaches + consensus across multiple groups, and selects the executor. The final decision in set within the TAC blockchain. + + + + A designated executor scans and finds the transaction to execute, validates its Merkle proof, triggers asset + minting/unlocking, and calls the swap on the target DEX contract on TAC. + + + + Swap completes and new tokens are sent back to the user's TON wallet through + the similar secure process. + ## What Makes TAC Different - TAC is not a cross-chain workaround—it is a native execution path between + TAC is not a cross-chain workaround — it is a native execution path between two ecosystems that were never meant to connect. By removing barriers instead of building over them, TAC aligns UX, liquidity, and developer incentives. -Unlike traditional bridges that move assets between existing chains, TAC creates **hybrid applications** that natively serve both ecosystems. Users don't "bridge to another chain"—they use applications that happen to run on EVM but feel completely native to TON. +Unlike traditional bridges that move assets between existing chains, TAC creates **hybrid applications** that natively serve both ecosystems. Users don't "bridge to another chain" — they use applications that happen to run on EVM but feel completely native to TON. This fundamental difference enables: @@ -159,22 +166,3 @@ This fundamental difference enables: - **Unified liquidity**: Assets flow where they're needed most - **Developer efficiency**: Build once, serve both ecosystems - **Network effects**: Growth in one ecosystem benefits the other - -## Ready to Explore? - - - - Understand how TAC's components work together - - - Learn what makes applications "hybrid" and why it matters - - diff --git a/core-concepts/token-economics/token-operations.mdx b/core-concepts/token-economics/token-operations.mdx deleted file mode 100644 index e45ced6..0000000 --- a/core-concepts/token-economics/token-operations.mdx +++ /dev/null @@ -1,262 +0,0 @@ ---- -title: Token Operations -description: "How different token types are handled, deployed, and managed across TON and TAC EVM chains" ---- - -Token operations in TAC encompass the creation, deployment, transfer, and management of digital assets across both TON and TAC EVM chains. The system supports multiple token standards while maintaining compatibility and seamless user experience across both ecosystems. - -## Token Categories - -TAC handles different categories of tokens, each with specific characteristics and operational requirements. - - - Different token types in the TAC ecosystem - - -### TON-Origin Tokens - -- **TON Jettons**: Standard fungible tokens native to the TON blockchain that follow TON's jetton standard with typical 9-decimal precision. - -- **Native TON**: The native currency of the TON blockchain, which receives special handling when bridging to maintain its fundamental properties. - -- **TON-Native Assets**: Specialized tokens created specifically for the TON ecosystem, including governance tokens, utility tokens, and application-specific assets. - -### TAC EVM-Origin Tokens - -- **Native TAC Tokens**: Tokens originally created on the TAC EVM Layer, including the native TAC token used for gas fees and protocol operations. - -- **EVM dApp Tokens**: Tokens created by applications deployed on TAC EVM, such as liquidity provider tokens, governance tokens, and application-specific assets. - -- **Wrapped Assets**: Representations of external assets that have been brought into the TAC EVM ecosystem through various bridging mechanisms. - -## Token Deployment Process - -When tokens first cross between chains, TAC automatically handles the deployment of corresponding token contracts with proper metadata preservation. - -### Automatic Deployment Triggers - - - - When a token type first appears in a cross-chain message, the sequencer - network detects that no corresponding contract exists on the target chain. - - - - The system extracts essential token information including name, symbol, - decimals, description, and original contract address from the source chain. - - - - A standard ERC-20 (for TAC EVM) or jetton (for TON) contract is automatically - deployed using the TokenFactory with the extracted metadata. - - - - The new token deployment is registered in the cross-chain address registry, - creating a permanent mapping between chain-specific addresses. - - - -### Token Implementation Standards - - - - - **Standard Compliance**: All bridged tokens on TAC EVM implement the standard ERC-20 interface for maximum compatibility with existing tools and protocols. - - - **Metadata Extensions**: Additional metadata fields are included to maintain connection with the original TON token, including the `l1Address` field containing the original TON jetton address. - - - **Decimal Preservation**: TON tokens maintain their original 9-decimal precision when deployed on TAC EVM, rather than being converted to the typical 18-decimal EVM standard. - - ```solidity - interface IERC20Extended { - // Standard ERC-20 functions - function name() external view returns (string memory); - function symbol() external view returns (string memory); - function decimals() external view returns (uint8); - - // TAC-specific metadata - function l1Address() external view returns (string memory); - function description() external view returns (string memory); - function image() external view returns (string memory); - } - ``` - - - - - **TON Standard Compliance**: Tokens bridged to TON follow the standard jetton implementation for compatibility with TON wallets and applications. - - - **Metadata Preservation**: Original EVM token metadata is preserved in the TON jetton implementation, including name, symbol, and decimal information. - - - **Decimal Limitations**: EVM tokens with 18 decimals face limitations when bridging to TON due to TON's 9-decimal standard, potentially requiring precision adjustments. - - - -## Asset Synchronization - -The synchronization process ensures that token representations remain consistent across both chains while maintaining proper supply accounting. - -### TON to TAC EVM Synchronization - -- **Automatic Trigger**: When users attempt to execute transactions involving TON-native tokens, sequencers automatically create wrapped versions on TAC EVM if they don't already exist. - -- **Token Creation Operation**: The sequencer creates a token deployment operation that includes all necessary metadata and deployment parameters. - -- **Verification Process**: The token's existence and metadata are verified on the TON blockchain before creating the corresponding EVM representation. - -- **Address Calculation**: The corresponding TAC EVM address is calculated deterministically based on the TON token's metadata and address. - -### TAC EVM to TON Synchronization - -- **Burn Operation Detection**: When EVM tokens are burned for bridging to TON, the system detects whether a corresponding jetton exists on TON. - -- **StateInit Inclusion**: If no corresponding jetton exists, the bridging message includes StateInit data for automatic token deployment on TON. - -- **Metadata Verification**: Token metadata is verified on TAC EVM and used to create the appropriate jetton implementation on TON. - -## Decimal Management - -Different blockchain ecosystems use different decimal standards, requiring careful handling to maintain precision and user experience. - - -- **TON Standard**: TON jettons typically use 9 decimals, following the platform's conventions for token precision and gas efficiency. - -- **EVM Standard**: Ethereum and EVM chains commonly use 18 decimals, providing higher precision for complex DeFi operations and calculations. - -- **Preservation Strategy**: TAC maintains the original decimal precision of tokens when bridging, rather than converting to the target chain's standard. - -- **Compatibility Considerations**: While TAC EVM supports tokens with various decimal counts, applications must handle the precision differences appropriately. - - - - - Bridging 18-decimal TAC tokens back to TON may have limitations due to TON's - 9-decimal standard. Consider keeping high-precision tokens on the EVM side - when possible. - - -## Address Calculation and Pairing - -Token address relationships follow deterministic patterns that enable predictable bridging behavior and address pre-calculation. - -### Deterministic Address Generation - -- **TVM-Origin Tokens**: For tokens originating from TON, the corresponding TAC EVM address is calculated based on the token's TON metadata and contract address. - -- **EVM-Origin Tokens**: For tokens originating from TAC EVM, the corresponding TON jetton address is calculated using the token's EVM metadata and deployment parameters. - -- **Pre-Calculation Capability**: Applications can calculate paired token addresses before tokens actually bridge, enabling advanced features and user interface improvements. - -### Address Registry System - - - - - **Mapping Storage**: The system maintains an on-chain registry of all token address pairs, providing an authoritative source for cross-chain address relationships. - - **Query Interface**: Applications can query the registry to find corresponding addresses without needing to perform calculations or wait for token deployment. - - **Metadata Access**: The registry also stores essential token metadata for proper display and interaction across both chains. - - - - - **Automatic Registration**: When tokens are first deployed through bridging operations, they're automatically registered with their cross-chain counterparts. - - **Verification Process**: Registry updates are validated through the same consensus mechanisms as other cross-chain operations. - - **Immutable Records**: Once registered, address pairs become immutable to prevent confusion and maintain consistency. - - - -## Liquidity Management - -Token operations enable sophisticated liquidity management strategies that benefit both TON and TAC EVM ecosystems. - -### Cross-Chain Liquidity Flow - -- **Dynamic Allocation**: Tokens can flow between chains based on where liquidity is most needed, optimizing capital efficiency across both ecosystems. - -- **Arbitrage Mechanisms**: Price differences between chains create natural arbitrage opportunities that help maintain price consistency and efficient markets. - -- **Protocol Integration**: DeFi protocols can access liquidity from both ecosystems, increasing available capital and reducing slippage for users. - -### Liquidity Pool Examples - - - - - **Unified Pools**: When users provide liquidity to DEXes on TAC EVM using TON-origin tokens, the system handles two separate transactions for TVM tokens that are combined into a single Merkle message. - - **LP Token Creation**: DEX pools create liquidity provider tokens that can be bridged back to TON for use in TON-native applications. - - **Cross-Chain Trading**: The same liquidity serves traders from both ecosystems, maximizing utilization and fee generation for liquidity providers. - - - - - **Collateral Management**: TON tokens can serve as collateral in TAC EVM lending protocols, while borrowed assets can be used across both chains. - - **Interest Optimization**: Users can move assets to the chain offering the best interest rates or borrowing terms. - - **Risk Distribution**: Cross-chain lending enables better risk distribution and capital efficiency. - - - -## Token Lifecycle Management - -### Creation and Minting - -- **Initial Deployment**: New tokens can be created on either chain and automatically gain the ability to bridge to the other chain when first used in cross-chain operations. - -- **Supply Management**: Token creators maintain control over supply on the origin chain, while bridged representations have supplies managed automatically by the bridging system. - -- **Metadata Updates**: While metadata can be modified on the origin chain, changes are not currently reflected in bridged representations, maintaining stability of deployed contracts. - -### Transfer and Trading - -- **Native Transfers**: Tokens can be transferred normally within their native chains using standard blockchain mechanisms. - -- **Cross-Chain Movement**: Token movement between chains occurs through the asset bridging system as part of application interactions. - -*- *Trading Integration\*\*: Bridged tokens integrate seamlessly with existing trading infrastructure on both chains. - -### Burning and Recovery - - - - - **Bridge Burning**: Tokens are burned automatically as part of the bridging process when moving from TAC EVM back to TON. - - **Supply Reduction**: Token creators can implement burning mechanisms on their native chains to reduce total supply. - - - - - **Failed Operation Recovery**: If cross-chain operations fail, the bridging system automatically handles asset recovery and return to users. - - **Emergency Procedures**: The system includes emergency procedures for recovering assets in extreme scenarios. - - - -## Special Token Types - -### Native Gas Tokens - -- **TON Token**: Native TON receives special handling when bridging, including automatic wrapping mechanisms and gas fee considerations. - -- **TAC Token**: The native TAC token used for gas fees on TAC EVM can be bridged to TON for use in TON-native applications. - -- **Gas Fee Management**: Both native tokens can be used for gas fees on their respective chains while maintaining bridging capabilities. - -### Governance Tokens - -- **Cross-Chain Governance**: Governance tokens can be bridged to enable participation in protocol governance from either chain. - -- **Voting Rights**: Bridged governance tokens maintain their voting rights and can participate in governance processes regardless of which chain they're currently on. - -- **Delegation Mechanisms**: Token holders can delegate voting rights across chains while maintaining custody of their tokens. - -## Performance and Scalability - -### Token Operation Efficiency - -- **Batch Processing**: Multiple token operations can be batched together for improved efficiency and reduced transaction costs. - -- **Optimized Deployment**: Token deployment processes are optimized to minimize gas costs and deployment time. - -- **Caching Strategies**: Token metadata and address mappings are cached to improve application performance. - -### Scaling Considerations - -- **Throughput Limits**: Token operations are subject to the same throughput limits as other cross-chain operations in TAC. - -- **Gas Optimization**: Token contracts are optimized for gas efficiency while maintaining full functionality and security. - -- **Network Effects**: As more tokens bridge between chains, network effects improve efficiency and reduce costs for all users. diff --git a/docs.json b/docs.json index 7705ae6..f0f4f47 100644 --- a/docs.json +++ b/docs.json @@ -17,17 +17,52 @@ "navigation": { "tabs": [ { - "tab": "Get Started", + "tab": "Intro", "pages": ["index"] }, { - "tab": "Build with TAC", + "tab": "Why TAC", "groups": [ { - "group": "Getting Started", - "icon": "rocket", - "pages": ["build/quickstart"] + "group": "Overview", + "icon": "info", + "pages": [ + "core-concepts/overview/what-is-tac", + "core-concepts/overview/architecture", + "core-concepts/overview/hybrid-dapps", + "core-concepts/overview/security" + ] }, + { + "group": " Components", + "icon": "blocks", + "pages": [ + "core-concepts/components/tac-evm-layer", + "core-concepts/components/ton-adapter", + "core-concepts/components/proxy-apps", + "core-concepts/components/sequencer-network", + "core-concepts/components/tac-sdk" + ] + }, + { + "group": "Cross-Chain Operations", + "icon": "arrow-left-right", + "pages": [ + "core-concepts/cross-chain-operations/cross-chain-messaging", + "core-concepts/cross-chain-operations/asset-bridging", + "core-concepts/cross-chain-operations/transaction-lifecycle", + "core-concepts/cross-chain-operations/message-validation" + ] + } + ] + }, + { + "tab": "Quickstart", + "pages": ["/quickstart/overview"] + }, + { + "tab": "Build", + "groups": [ { "group": "Smart Contracts", "icon": "code", @@ -113,56 +148,32 @@ ] }, { - "tab": "Core Concepts", - "groups": [ - { - "group": "Overview", - "icon": "info", - "pages": [ - "core-concepts/overview/what-is-tac", - "core-concepts/overview/architecture", - "core-concepts/overview/hybrid-dapps", - "core-concepts/overview/security" - ] - }, - { - "group": " Components", - "icon": "blocks", - "pages": [ - "core-concepts/components/tac-evm-layer", - "core-concepts/components/ton-adapter", - "core-concepts/components/proxy-apps", - "core-concepts/components/sequencer-network", - "core-concepts/components/tac-sdk" - ] - }, - { - "group": "Cross-Chain Operations", - "icon": "arrow-left-right", - "pages": [ - "core-concepts/cross-chain-operations/cross-chain-messaging", - "core-concepts/cross-chain-operations/asset-bridging", - "core-concepts/cross-chain-operations/transaction-lifecycle", - "core-concepts/cross-chain-operations/message-validation" - ] - }, - - { - "group": "Token Economics", - "icon": "coins", - "pages": ["core-concepts/token-economics/token-operations"] - } + "tab": "Explorer", + "pages": ["explorer/overview"] + }, + { + "tab": "SDK", + "pages": [ + "sdk/overview", + "sdk/ts-sdk", + "sdk/python-sdk" ] }, + { + "tab": "API", + "pages": ["api/overview"] + }, { "tab": "Ecosystem", "groups": [ { "group": "Overview", + "icon": "info", "pages": ["ecosystem/index", "ecosystem/token-list"] }, { "group": "Oracles", + "icon": "database", "pages": [ "ecosystem/oracles/redstone", "ecosystem/oracles/stork", @@ -172,6 +183,7 @@ }, { "group": "Interoperability", + "icon": "arrow-left-right", "pages": [ "ecosystem/interoperability/layerzero", "ecosystem/interoperability/hyperlane" @@ -179,6 +191,7 @@ }, { "group": "Data and Indexers", + "icon": "chart-line", "pages": [ "ecosystem/data-indexers/goldsky", "ecosystem/data-indexers/dune" @@ -186,13 +199,15 @@ }, { "group": "Development Tools", + "icon": "code", "pages": [ "ecosystem/development-tools/thirdweb", "ecosystem/development-tools/tenderly" ] }, { - "group": "Multi-Sig Wallets", + "group": "Multisig Wallets", + "icon": "shield", "pages": [ "ecosystem/multi-sig-wallets/safe", "ecosystem/multi-sig-wallets/ton-multisig" @@ -200,40 +215,19 @@ }, { "group": "RPCs", + "icon": "globe", "pages": ["ecosystem/rpcs/ankr"] } ] }, - { - "tab": "API Reference", - - "groups": [ - { - "group": "Overview", - "pages": ["api-reference/get-started"] - }, - { - "group": "TON Adapter APIs", - "openapi": { - "source": "api-reference/ton-adapter/openapi.yaml", - "directory": "api-reference/ton-adapter" - } - } - ] + "tab": "Apps", + "pages": ["apps/overview"] }, { - "tab": "Release Notes", - "groups": [ - { - "group": "Release Notes", - "pages": [ - "release-notes/overview", - "release-notes/sdk", - "release-notes/ton-adapter", - "release-notes/evm" - ] - } + "tab": "Audit", + "pages": [ + "audit-reports/audit" ] } ] @@ -246,6 +240,14 @@ { "source": "/build/get-started/introduction", "destination": "/build/quickstart" + }, + { + "source": "/home/get-started/introduction", + "destination": "/build/quickstart" + }, + { + "source": "/home/core-concepts/cross-chain-messaging", + "destination": "/core-concepts/cross-chain-operations/cross-chain-messaging" } ], "logo": { diff --git a/ecosystem/data-indexers/dune.mdx b/ecosystem/data-indexers/dune.mdx index e5ef022..4287142 100644 --- a/ecosystem/data-indexers/dune.mdx +++ b/ecosystem/data-indexers/dune.mdx @@ -1 +1,14 @@ -Coming soon! +--- +title: Dune +--- + +Dune is a leading, community-driven blockchain analytics platform that allows users to query, visualize, and analyze on-chain data from over 100+ networks including TAC. + + + + + diff --git a/ecosystem/data-indexers/goldsky.mdx b/ecosystem/data-indexers/goldsky.mdx index b688bbc..44e2b80 100644 --- a/ecosystem/data-indexers/goldsky.mdx +++ b/ecosystem/data-indexers/goldsky.mdx @@ -2,38 +2,23 @@ title: Goldsky --- -Goldsky is Web3’s realtime data platform, giving TAC developers access to world-class data infrastructure specifically optimized for building powerful onchain applications within the TON ecosystem (powered by TAC). - -Seamlessly access the blockchain data you need with lightning-fast indexing, resilient subgraphs tailored for TAC, and flexible data streaming pipelines. Spend less time dealing with the complexities of infrastructure management and more time creating exceptional user experiences on TAC. - -## Why Goldsky for TAC? - -- **Scalable Infrastructure**: Scalable and resilient infrastructure, ensuring smooth performance as your TAC application grows. -- **TAC Developer-Friendly Tools**: Easily integrate and iterate your apps within the TON ecosystem (powered by TAC) without getting bogged down by complex data engineering. -- **Enterprise Support**: The Goldsky team offers dedicated, 24/7 support specifically tailored for the TAC developer community. +Seamlessly access the blockchain data you need with lightning-fast indexing by Goldsky, resilient subgraphs tailored for TAC, and flexible data streaming pipelines. ## Goldsky Products -### Subgraphs - -**Subgraphs** let you efficiently access blockchain data specific to your TAC application needs. - -- **Fast Queries**: Optimized infrastructure ensures faster query responses, specifically fine-tuned for TAC network data. -- **Flexible Integration**: Customize your queries and indexing strategy to suit your application's unique TAC-specific requirements. -- **Tagging & Organization**: Use tagging for easier data organization and accessibility within TAC projects. - -**Use Cases**: dApps, NFT marketplaces, gaming platforms, DAOs, or any application on TAC that demands reliable, real-time blockchain data. - -### Mirror +Explore data products like **Subgraphs** and **Edge** for TAC: -**Mirror** provides complete control over TAC blockchain data. Beyond just querying, you can stream TAC's onchain data directly into your own database. + -- **Realtime Streaming**: Stream TAC data directly into your existing systems, enabling interactive user experiences. -- **Custom Data Handling**: Integrate and synchronize TAC blockchain data into your internal databases, merging seamlessly with offchain data. -- **Automatic Data Updates**: Goldsky maintains continuous synchronization to ensure accuracy of your TAC blockchain data. + + -**Use Cases**: Complex TAC network queries, database integration, real-time analytics, points systems, leaderboards, user progress tracking, loyalty programs, and custom TAC-specific dashboards. + ## Getting Started -For more details, check out the [Goldsky Documentation](https://docs.goldsky.com/chains/tac/?utm_source=tac&utm_medium=docs). Start building smarter, faster, and deliver a superior experience to your users on TAC. +For detailed instructions check out the [Goldsky Documentation](https://docs.goldsky.com/chains/tac/?utm_source=tac&utm_medium=docs). diff --git a/ecosystem/development-tools/thirdweb.mdx b/ecosystem/development-tools/thirdweb.mdx index e5ef022..40387dc 100644 --- a/ecosystem/development-tools/thirdweb.mdx +++ b/ecosystem/development-tools/thirdweb.mdx @@ -1 +1,18 @@ -Coming soon! +Thirdweb is a complete web3 development toolkit, built by developers for web3 developers. With powerful built-in tools, such as wallet infrastructure, web3 payment solutions & authentication methods, thirdweb has everything you need to build powerful web3 apps in no time. + + + + + + + + > + + + \ No newline at end of file diff --git a/ecosystem/index.mdx b/ecosystem/index.mdx index 5ba9184..1ba9a20 100644 --- a/ecosystem/index.mdx +++ b/ecosystem/index.mdx @@ -1,12 +1,16 @@ --- -title: Ecosystem Overview +title: Ecosystem description: "TAC's ecosystem partners providing oracles, interoperability, data indexing, development tools, and infrastructure" --- TAC works with established partners across the blockchain ecosystem to provide developers with proven tools and services for building hybrid dApps. +Find more infrastructure partners on our [main page](https://tac.build/tacnetwork). + ## Oracles +Services that provide smart contracts with access to external, real-world data and off-chain price feeds. + @@ -16,6 +20,8 @@ TAC works with established partners across the blockchain ecosystem to provide d ## Interoperability +Protocols and bridges that enable seamless communication and asset transfers between different blockchain networks. + -## Multi-Sig Wallets +## Multisig Wallets - - +Secure digital wallets that require multiple authorized signatures to approve a transaction, enhancing fund safety. + + + + ## RPCs +Infrastructure providers that offer the necessary endpoints to interact with the blockchain. + diff --git a/ecosystem/interoperability/hyperlane.mdx b/ecosystem/interoperability/hyperlane.mdx index e5ef022..be59144 100644 --- a/ecosystem/interoperability/hyperlane.mdx +++ b/ecosystem/interoperability/hyperlane.mdx @@ -1 +1,15 @@ -Coming soon! + +Hyperlane is live on TAC and already onboarded some assets. + +Refer to [Noon](https://app.noon.capital/bridge) with Hyperlane as a provider to bridge to/from TAC. + + + + + + + diff --git a/ecosystem/interoperability/layerzero.mdx b/ecosystem/interoperability/layerzero.mdx index e5ef022..a3b26e8 100644 --- a/ecosystem/interoperability/layerzero.mdx +++ b/ecosystem/interoperability/layerzero.mdx @@ -1 +1,16 @@ -Coming soon! +--- +title: LayerZero +--- + +LayerZero works with asset issuers, chains, and applications to make money more extensible. Issue any asset on chain, extend its reach to new ecosystems, connect fragmented liquidity and more. + + + + + + + diff --git a/ecosystem/multi-sig-wallets/safe.mdx b/ecosystem/multi-sig-wallets/safe.mdx index 0bb36aa..0f1a3f4 100644 --- a/ecosystem/multi-sig-wallets/safe.mdx +++ b/ecosystem/multi-sig-wallets/safe.mdx @@ -5,6 +5,17 @@ description: "Deploy secure multi-signature wallets on TAC with Safe's battle-te Safe (formerly Gnosis Safe) is a multi-signature wallet that requires multiple signatures to execute transactions. Instead of one private key controlling funds, Safe requires M-of-N signatures from designated owners. + + + + + + + ## How it works Safe deploys a smart contract that acts as your wallet. You define: diff --git a/ecosystem/oracles/apro.mdx b/ecosystem/oracles/apro.mdx index 3477453..3a57e83 100644 --- a/ecosystem/oracles/apro.mdx +++ b/ecosystem/oracles/apro.mdx @@ -1,450 +1,26 @@ --- title: APRO -description: Fast integration of APRO predictor services into TAC chain --- APRO is building a secure platform by combining off-chain processing with on-chain verification, extending both data access and computational capabilities. This forms the foundation of APRO Data Service, improving data accuracy and efficiency while offering the flexibility to create custom solutions tailored to the specific needs of DApp businesses. ## Available Price Feeds -| Feed Name | Network | Address | -| --------- | ------- | ------------------------------------------------------------------------------------------------------------------------------- | -| BTC/USD | Mainnet | [0xe3C2d89Ef01A06F1d2817036919e0424675290AD](https://explorer.tac.build/address/0xe3C2d89Ef01A06F1d2817036919e0424675290AD) | -| TON/USD | Mainnet | [0x0d72Da0e698D97538759174a66DB8cAA55522313](https://explorer.tac.build/address/0x0d72Da0e698D97538759174a66DB8cAA55522313) | -| ETH/USD | Mainnet | [0xd0E76152Af372D2a85FaF3E4c4E52E6F95e22e53](https://explorer.tac.build/address/0xd0E76152Af372D2a85FaF3E4c4E52E6F95e22e53) | -| USDT/USD | Mainnet | [0xE13FEf4A5940392941B51D0760b81750364F5aC5](https://explorer.tac.build/address/0xE13FEf4A5940392941B51D0760b81750364F5aC5) | -| BTC/USD | Testnet | [0xd0E76152Af372D2a85FaF3E4c4E52E6F95e22e53](https://spb.explorer.tac.build/address/0xd0E76152Af372D2a85FaF3E4c4E52E6F95e22e53) | -| USDT/USD | Testnet | [0xF424cAA15eF7F8524bF55bD838935A25cDf1caae](https://spb.explorer.tac.build/address/0xF424cAA15eF7F8524bF55bD838935A25cDf1caae) | +Up to date price feeds from the official docs: -Data Push: APRO Data Push uses a "Push-Based" data model to deliver Price Feed services. Decentralized independent node operators continuously gather and push data updates to the blockchain when certain price thresholds or time intervals are met. This method improves blockchain scalability, supports various data products, and provides timely updates. - -We continually refine and optimize our platform to deliver enhanced services and experiences, driving forward the development and application of blockchain technology. - -Key Benefits of APRO Data Service - -- Advantages of APRO Combination of Off-Chain Computing and On-Chain Verification - APRO platform integrates off-chain computing with on-chain verification to extend computing capabilities and data access while ensuring system security and reliability. - -- Customization of Secure and Trustworthy Computing Logic - DApp businesses can customize computing logic according to their needs and run it on the APRO platform, achieving personalized business logic processing without concerns about security issues. - -- Enhancement of Oracle Network Security and Stability - We focus on enhancing the security and stability of the Oracle network through various measures to ensure continuous service capability. - -- Hybrid Node Approach - Introducing a Hybrid node approach that combines on-chain and off-chain computing resources to improve computing efficiency and performance. - -- Multi-Network Communication Scheme - Establishing a multi-centralized network communication scheme ensures network stability and reliability while reducing the risk of single-point failures. - -- TVWAP Price Discovery Mechanism - Applying the TVWAP price discovery mechanism ensures fairness and accuracy of data prices, preventing data tampering and malicious manipulation. + + + + ## Data Push -- Data Push: Threshold-Based Data Updates - APRO Data Push offers a "Push-Based" data model, which we use to provide Price Feed services. In this model, decentralized independent node operators continuously aggregate and push data updates to the blockchain when specific price thresholds or heartbeat intervals are reached. This approach enhances blockchain scalability, supports a broader range of data products, and ensures timely updates. - -- Trusted Data for DeFi - APRO Data Push Model is widely utilized in various applications, especially in DeFi protocols and smart contracts, providing highly trusted, real-time, and secure data. - -- Reliable Data Transmission - The APRO Data Push model employs multiple high-quality data transmission methods, leveraging a hybrid node architecture, multi-centralized communication networks, the TVWAP price discovery mechanism, and a self-managed multi-signature framework. This ensures the delivery of accurate, tamper-resistant data, safeguarded against vulnerabilities or oracle-based attacks, ensuring reliability across diverse use cases. +APRO's threshold-based data updates use a "Push-Based" model. In this model, decentralized independent node operators continuously aggregate and push data updates to the blockchain when specific price thresholds or heartbeat intervals are reached. This approach enhances blockchain scalability, supports a broader range of data products, and ensures timely updates. ## Getting Started -You can use APRO Data Push to connect your smart contracts to asset pricing data. These data feeds aggregate information from many independent APRO node operators. Each price feed has an on-chain address and functions that enable contracts to read real-time pricing data directly from that address. - -This section explains the Data Push, where APRO pushes real-time data to your contracts, allowing for immediate access to pricing updates without requiring frequent manual requests. This approach optimizes performance by reducing on-chain calls and enhances efficiency for applications that need continuous updates. - -You'll learn how to read Data Feeds and store the value on-chain using Solidity. The code for reading Data Feeds on Tac or other EVM-compatible blockchains remains consistent across different chains and data feed types. You can choose various types of feeds depending on your use case, but the request and response format stays the same. However, the answer's decimal length and expected value ranges might differ depending on the feed you are using. - -```solidity -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.7; - -/** - * THIS IS AN EXAMPLE CONTRACT THAT USES HARDCODED - * VALUES FOR CLARITY. - * THIS IS AN EXAMPLE CONTRACT THAT USES UN-AUDITED CODE. - * DO NOT USE THIS CODE IN PRODUCTION. - */ - -interface AggregatorV3Interface { - - function decimals() external view returns (uint8); - function description() external view returns (string memory); - function version() external view returns (uint256); - - // getRoundData and latestRoundData should both raise "No data present" - // if they do not have data to report, instead of returning unset values - // which could be misinterpreted as actual reported values. - function getRoundData(uint80 _roundId) - external - view - returns ( - uint80 roundId, - int256 answer, - uint256 startedAt, - uint256 updatedAt, - uint80 answeredInRound - ); - function latestRoundData() - external - view - returns ( - uint80 roundId, - int256 answer, - uint256 startedAt, - uint256 updatedAt, - uint80 answeredInRound - ); - -} - - -contract DataConsumer { - AggregatorV3Interface internal dataFeed; - - /** - * Network: Tac testnet - * Aggregator: BTC/USD - * Address: 0xA840DA91be3f707E8774A04Fc9e346d236F5dbBD - */ - constructor() { - dataFeed = AggregatorV3Interface( - 0xA840DA91be3f707E8774A04Fc9e346d236F5dbBD - ); - } - - /** - * Returns the latest answer. - */ - function getDataFeedLatestAnswer() public view returns (int) { - // prettier-ignore - ( - /* uint80 roundId */, - int256 answer, - /*uint256 startedAt*/, - /*uint256 timeStamp*/, - /*uint80 answeredInRound*/ - ) = dataFeed.latestRoundData(); - return answer; - } - - /** - * Returns decimals. - */ - function getDecimals() public view returns (uint8) { - uint8 decimals = dataFeed.decimals(); - return decimals; - } -} - -``` - -This example contract obtains the latest price answer from the BTC / USD feed on the Tac testnet. - -## EVM Guides - -This section provides essential guides for integrating APRO Price Feeds on EVM-compatible blockchains. Whether you're working with smart contracts or using APIs to fetch price data, these guides will help you implement APRO's oracle solutions effectively. - -### Using Price Feed - -Learn how to read price feeds on-chain with Solidity and off-chain using Web3.js. This guide walks you through setting up your RPC endpoint, selecting the right Price Feed contract address, and interacting with data feeds for real-time price updates. - -The code for reading Data Push is the same across all EVM-compatible blockchains and price feed types. You choose different types of price feed for different uses, but the request and response format are the same. To read a price feed, specify the following variables: - -- RPC endpoint URL: This determines which network your smart contracts will run on. You can use a node provider service or point to your own client. If you are using a Web3 wallet, it is already configured with the RPC endpoints for several networks and the [Remix IDE](https://remix-project.org/) will automatically detect them for you. - -- Feed contract address: This determines which Price Feed your smart contract will read. Contract addresses are different for each network. You can find the available contract addresses on the following pages: - [Price Feed Contract Addresses](#Price-Feed-Contract) - -The examples in this document indicate these variables, but you can modify the examples to work on different networks and read different feeds. -This guide shows example code that reads Price Feed using the following languages: - -#### Onchain consumer contracts - -These code examples demonstrate how to deploy a consumer contract on-chain that reads a data feed and stores the value. - -##### Solidity - -To consume price data, your smart contract should reference AggregatorV3Interface, which defines the external functions implemented by Data Feeds. - -```solidity -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.7; - -/** - * THIS IS AN EXAMPLE CONTRACT THAT USES HARDCODED - * VALUES FOR CLARITY. - * THIS IS AN EXAMPLE CONTRACT THAT USES UN-AUDITED CODE. - * DO NOT USE THIS CODE IN PRODUCTION. - */ - -interface AggregatorV3Interface { - - function decimals() external view returns (uint8); - function description() external view returns (string memory); - function version() external view returns (uint256); - - // getRoundData and latestRoundData should both raise "No data present" - // if they do not have data to report, instead of returning unset values - // which could be misinterpreted as actual reported values. - function getRoundData(uint80 _roundId) - external - view - returns ( - uint80 roundId, - int256 answer, - uint256 startedAt, - uint256 updatedAt, - uint80 answeredInRound - ); - function latestRoundData() - external - view - returns ( - uint80 roundId, - int256 answer, - uint256 startedAt, - uint256 updatedAt, - uint80 answeredInRound - ); - -} - - -contract DataConsumer { - AggregatorV3Interface internal dataFeed; - - /** - * Network: Tac testnet - * Aggregator: BTC/USD - * Address: 0xA840DA91be3f707E8774A04Fc9e346d236F5dbBD - */ - constructor() { - dataFeed = AggregatorV3Interface( - 0xA840DA91be3f707E8774A04Fc9e346d236F5dbBD - ); - } - - /** - * Returns the latest answer. - */ - function getDataFeedLatestAnswer() public view returns (int) { - // prettier-ignore - ( - /* uint80 roundId */, - int256 answer, - /*uint256 startedAt*/, - /*uint256 timeStamp*/, - /*uint80 answeredInRound*/ - ) = dataFeed.latestRoundData(); - return answer; - } - - /** - * Returns decimals. - */ - function getDecimals() public view returns (uint8) { - uint8 decimals = dataFeed.decimals(); - return decimals; - } -} -``` - -The latestRoundData function returns five values representing information about the latest price data. See the Price Feed API Reference for more details. - -#### Offchain reads using Web3.js - -These code examples demonstrate how to read data feeds directly off-chain using Web3 packages for each language. - -##### Javascript - -This example uses [web3.js](https://web3js.readthedocs.io/en/v1.10.0/) to retrieve feed data from the BTC / USD feed on the Tac testnet. - -```Javascript -/** - * THIS IS EXAMPLE CODE THAT USES HARDCODED VALUES FOR CLARITY. - * THIS IS EXAMPLE CODE THAT USES UN-AUDITED CODE. - * DO NOT USE THIS CODE IN PRODUCTION. - */ - -const Web3 = require("web3") // for nodejs only -const web3 = new Web3("https://spb.rpc.tac.build") -const aggregatorV3InterfaceABI = [ - { - inputs: [], - name: "decimals", - outputs: [{ internalType: "uint8", name: "", type: "uint8" }], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "description", - outputs: [{ internalType: "string", name: "", type: "string" }], - stateMutability: "view", - type: "function", - }, - { - inputs: [{ internalType: "uint80", name: "_roundId", type: "uint80" }], - name: "getRoundData", - outputs: [ - { internalType: "uint80", name: "roundId", type: "uint80" }, - { internalType: "int256", name: "answer", type: "int256" }, - { internalType: "uint256", name: "startedAt", type: "uint256" }, - { internalType: "uint256", name: "updatedAt", type: "uint256" }, - { internalType: "uint80", name: "answeredInRound", type: "uint80" }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "latestRoundData", - outputs: [ - { internalType: "uint80", name: "roundId", type: "uint80" }, - { internalType: "int256", name: "answer", type: "int256" }, - { internalType: "uint256", name: "startedAt", type: "uint256" }, - { internalType: "uint256", name: "updatedAt", type: "uint256" }, - { internalType: "uint80", name: "answeredInRound", type: "uint80" }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "version", - outputs: [{ internalType: "uint256", name: "", type: "uint256" }], - stateMutability: "view", - type: "function", - }, -] -const addr = "0xA840DA91be3f707E8774A04Fc9e346d236F5dbBD" -const priceFeed = new web3.eth.Contract(aggregatorV3InterfaceABI, addr) -priceFeed.methods - .latestRoundData() - .call() - .then((roundData) => { - // Do something with roundData - console.log("Latest Round Data", roundData) - }) -``` - -### Price Feed API Reference - -A technical reference for using the AggregatorV3Interface to fetch price data. This guide explains how to retrieve feed details like round data, descriptions, and decimal precision, ensuring you can accurately integrate APRO Price Feeds into your dApps. - -When you use price feed, retrieve the feeds through the AggregatorV3Interface and the proxy address. - -#### AggregatorV3Interface - -Import this interface to your contract and use it to run functions in the proxy contract. Create the interface object by pointing to the proxy address. For example, on Tac you could create the interface object in the constructor of your contract using the following example: - -```solidity -/** - * Network: Tac testnet - * Data Feed: BTC/USD - * Address: 0xA840DA91be3f707E8774A04Fc9e346d236F5dbBD - */ -constructor() { - priceFeed = AggregatorV3Interface(0xA840DA91be3f707E8774A04Fc9e346d236F5dbBD); -} -``` - -```solidity -// SPDX-License-Identifier: MIT -pragma solidity >0.8.0; - - -interface AggregatorV3Interface { - - function decimals() external view returns (uint8); - function description() external view returns (string memory); - function version() external view returns (uint256); - - // getRoundData and latestRoundData should both raise "No data present" - // if they do not have data to report, instead of returning unset values - // which could be misinterpreted as actual reported values. - function getRoundData(uint80 _roundId) - external - view - returns ( - uint80 roundId, - int256 answer, - uint256 startedAt, - uint256 updatedAt, - uint80 answeredInRound - ); - -} -``` - -#### Functions in AggregatorV3Interface - -| Name | Description | -| -------------- | -------------------------------------------------------------------- | -| `decimals` | The number of decimals in the response. | -| `description` | The description of the aggregator that the proxy points to. | -| `getRoundData` | Get data from a specific round. | -| `version` | The version representing the type of aggregator the proxy points to. | - -##### decimals - -Get the number of decimals present in the response value. - -```solidity -function decimals() external view returns (uint8); -``` - -- `RETURN`: The number of decimals. - -##### description - -Get the description of the underlying aggregator that the proxy points to. - -```solidity -function description() external view returns (string memory); -``` - -- `RETURN`: The description of the underlying aggregator. - -##### getRoundData - -Get data about a specific round, using the roundId. - -```solidity -function getRoundData( - uint80 _roundId -) external view returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound); -``` - -Parameters: - -- `_roundId`: The round Id - -Return values: - -- `roundId`: The round Id - -- `answer`: The answer for this round - -- `startedAt`: Timestamp of when the round started - -- `updatedAt`: Timestamp of when the round was updated - -- `answeredInRound`: The round Id of the round in which the answer was computed - -##### version - -The version representing the type of aggregator the proxy points to. - -```solidity -function version() external view returns (uint256) -``` - -- `RETURN`: The version number. - -For inquiries regarding Price Feeds for additional chains, check out the [Price Feed Contract Documentation](https://docs.apro.com/en/data-push/price-feed-contract). +Please refer to the APRO official docs [here](https://docs.apro.com/en/data-push/getting-started). diff --git a/ecosystem/oracles/eo.mdx b/ecosystem/oracles/eo.mdx index b097d8f..7a0e78b 100644 --- a/ecosystem/oracles/eo.mdx +++ b/ecosystem/oracles/eo.mdx @@ -2,7 +2,7 @@ title: EO --- -EO provides Dapps on TAC with secure, real-time data feeds critical for powering safe and capital-efficient lending markets. Built by experts in cybersecurity and risk management, and backed by $6B in staked security with 140 validators globally, EO is the most secure and decentralized oracle network available today. +EO delivers high-stakes data through a decentralized, modular system purpose-built for security and reliability with a network of 140+ validators, backed by over $2M in restaked ETH. Trusted by leading curators and money markets, EO powers price feeds across 25+ chains, enabling liquidity for RWAs, PT tokens, LP tokens, synthetic assets, and novel stablecoins. ## Available Price Feeds @@ -19,26 +19,6 @@ EO provides Dapps on TAC with secure, real-time data feeds critical for powering | rsETH/ETH | Mainnet | [0xC2A8dc68d3F0EFe893FAab3D5414C18CAEDB58F5](https://explorer.tac.build/address/0xC2A8dc68d3F0EFe893FAab3D5414C18CAEDB58F5) | | wstETH/ETH | Mainnet | [0x6a7c5E1453eD56B89ce05aDad746dcE01723E986](https://explorer.tac.build/address/0x6a7c5E1453eD56B89ce05aDad746dcE01723E986) | -## Why EO? - -EO delivers high-stakes data through a decentralized, modular system purpose-built for security and reliability. Our network of 140+ validators, backed by over $2M in restaked ETH, ensures data integrity with real-time performance monitoring and advanced outlier detection. Each price update follows a transparent process: operators submit signed data to our proof-of-stake chain, reach consensus, and cryptographically broadcast the result to target chains. Trusted by leading curators and money markets, EO powers price feeds across 25+ chains, enabling liquidity for RWAs, PT tokens, LP tokens, synthetic assets, and novel stablecoins. - -## ePrice – Modular Oracle for Asset Price Feeds\*\* - -ePrice is built on restaked Ethereum security and combines reliable infrastructure with sophisticated price discovery. It supports permissionless integration, enabling accurate and secure pricing for a wide range of assets, including low-liquidity and emerging markets. - -## PT Token Pricing - -PT tokens offer fixed yield with a known maturity value, making them attractive as collateral. However, they require precise pricing to avoid bad debt and ensure market efficiency. EO provides the Defi Ecosystem with secure PT token feeds that support safer borrowing, more accurate risk-adjusted rates, and better capital utilization—enabling PT-backed markets to scale reliably. - -## RWAfi Feeds - -EO supports real-world asset (RWAfi) markets with verified price feeds for tokenized off-chain financial instruments, such as treasuries. These feeds bridge the gap between traditional finance and DeFi, enabling safe use of RWAs as collateral. Accurate, secure pricing is essential to unlock the full potential of RWA-backed lending—and EO delivers exactly that. - -## Live Data Feeds - -EO’s supported feeds are continuously expanding. For the most up-to-date list of supported chains and feed contract addresses, please visit our [docs](https://docs.eo.app/docs/eprice/feed-addresses) - ## Integration -Please find our Integration guide [here](https://docs.eo.app/docs/eprice/integration-guide) +Find the integration guide in the official docs [here](https://docs.eo.app/docs/eprice/integration-guide). diff --git a/ecosystem/oracles/redstone.mdx b/ecosystem/oracles/redstone.mdx index 281155b..fcd84b4 100644 --- a/ecosystem/oracles/redstone.mdx +++ b/ecosystem/oracles/redstone.mdx @@ -8,33 +8,29 @@ RedStone delivers frequently updated, reliable, and diverse data feeds for your - Unique price feeds (including LSTs, LRTs, RWAs and TAC-native assets) - Modular Oracle Design allows for flexibility towards user needs -RedStone operates in two models Push and Pull both available on TAC. +RedStone operates in two models **Push** and **Pull** both available on TAC. ## Available Price Feeds -| Feed Name | Network | Address | -| --------- | ------- | --------------------------------------------------------------------------------------------------------------------------- | -| ETH/USD | Mainnet | [0xc555c100DB24dF36D406243642C169CC5A937f09](https://explorer.tac.build/address/0xc555c100DB24dF36D406243642C169CC5A937f09) | -| BTC/USD | Mainnet | [0xf0DEbDAE819b354D076b0D162e399BE013A856d3](https://explorer.tac.build/address/0xf0DEbDAE819b354D076b0D162e399BE013A856d3) | -| USDC/USD | Mainnet | [0x4aF6b78d92432D32E3a635E824d3A541866f7a78](https://explorer.tac.build/address/0x4aF6b78d92432D32E3a635E824d3A541866f7a78) | -| TON/USD | Mainnet | [0x26FB59e5562405F42f55661f790fA1Bd2F410A3d](https://explorer.tac.build/address/0x26FB59e5562405F42f55661f790fA1Bd2F410A3d) | -| USDT/USD | Mainnet | [0xb67047eDF6204F4C81333248dA71F8387050790C](https://explorer.tac.build/address/0xb67047eDF6204F4C81333248dA71F8387050790C) | -| tsTON/TON | Mainnet | [0xb9D0073aCb296719C26a8BF156e4b599174fe1d5](https://explorer.tac.build/address/0xb9D0073aCb296719C26a8BF156e4b599174fe1d5) | +Up to date TAC price feeds from the official docs: + + + + + ## How to integrate [RedStone Push](https://docs.redstone.finance/docs/dapps/redstone-push/)? The RedStone Push model ensures that data is pushed into onchain storage via a relayer. Dedicated to protocols designed for the traditional Push Oracles model, that want to have full control of the data source and update conditions (heartbeat and deviation threshold). +Push model is available on both TAC Testnet & Mainnet. -The onchain contracts in Push enable storing prices and getting them through a familiar interface (e.g. the Chainlink Aggregator). Push model is available on both TAC testnet & coming to mainnet in the future. You can find a list of available price feeds [here](https://app.redstone.finance/app/feeds/). - -## How to integrate RedStone [Pull](https://docs.redstone.finance/docs/dapps/redstone-pull/)? +## How to integrate [RedStone Pull](https://docs.redstone.finance/docs/dapps/redstone-pull/)? The RedStone Pull model allows your dApp to utilize data feeds delivered “on-demand”, only when the data is needed. Thanks to the implementation of the EVM-connector library and extending your Ethers.js, your dApp will be able to attach signed data packages with timestamps to call data of your users’ transactions. -In order to implement the Pull model you will need to do two things: - -1. Adjust the Javascript code of your dApp to inject the additional payload with signed data feeds to call data of your users’ transactions (otherwise you will get smart contract errors). -2. Adjust your smart contracts to include the libraries responsible for data extraction from call data and signature verification. - Please see the specific steps and ready code samples in the [Docs](https://docs.redstone.finance/docs/introduction). If you need help with integration join RedStone [Discord](https://discord.com/invite/PVxBZKFr46) and ask their team for help. diff --git a/ecosystem/oracles/stork.mdx b/ecosystem/oracles/stork.mdx index 4291668..b084d07 100644 --- a/ecosystem/oracles/stork.mdx +++ b/ecosystem/oracles/stork.mdx @@ -2,15 +2,16 @@ title: Stork --- -Stork is an oracle protocol that enables sub-second data feeds onchain. The core technical principles of Stork are: +Stork is an oracle protocol that enables sub-second data feeds onchain. Stork's full documentation is available [here](https://docs.stork.network). -- **Modularity** -- **Low Latency** -- **Cost efficiency** -- **Arbitrary Data Support** -- **Transparency, Verifiability, and Security** - -Stork's full documentation is available [here](https://docs.stork.network). + + + + ## How does it work? @@ -37,7 +38,3 @@ For more information on how to use the Stork Chain Pusher, please refer to [Putt Reading from the Stork contract is as simple as calling its `getTemporalNumericValueV1(bytes32 id)` function from your contract. This function takes an encoded asset ID of the relevant asset and returns the latest value for that asset in the form of a `TemporalNumericValue` struct, which contains an integer value (multiplied by 10^18 for precision) and a UNIX nanosecond timestamp. For more information on how to read data from the Stork contract, please refer to the [EVM Contract API](https://docs.stork.network/api-reference/contract-apis/evm). - -## Asset IDs - -Stork supports a wide range of assets and asset classes. For a full list of supported assets and their encoded asset IDs, please refer to [Supported Assets](https://docs.stork.network/resources/asset-id-registry). diff --git a/ecosystem/rpcs/ankr.mdx b/ecosystem/rpcs/ankr.mdx index ae63c9c..c90931a 100644 --- a/ecosystem/rpcs/ankr.mdx +++ b/ecosystem/rpcs/ankr.mdx @@ -1,5 +1,7 @@ Ankr is a leading provider of blockchain infrastructure, offering a range of services including RPC nodes, indexing, and analytics. +https://www.ankr.com/rpc/tac + ## TAC Network RPC Infrastructure TAC offers full EVM compatibility through its Layer 1 blockchain. For reliable development and production environments, we've partnered with Ankr to provide enterprise-grade RPC infrastructure. @@ -35,7 +37,7 @@ For EVM application integration using Ankr's RPC services: import { ethers } from 'ethers'; // Connect via Ankr's RPC endpoint -const provider = new ethers.providers.JsonRpcProvider('https://spb.rpc.tac.build'); +const provider = new ethers.providers.JsonRpcProvider('https://rpc.ankr.com/tac_spb'); // Test connection async function checkConnection() { @@ -47,7 +49,7 @@ async function checkConnection() { Or for deployment on TAC L1 using Foundry ``` -forge create --rpc-url https://spb.rpc.tac.build --private-key YOUR_PRIVATE_KEY_HERE YOUR_CONTRACT --legacy --broadcast +forge create --rpc-url https://rpc.ankr.com/tac_spb --private-key YOUR_PRIVATE_KEY_HERE YOUR_CONTRACT --legacy --broadcast ``` diff --git a/ecosystem/token-list.mdx b/ecosystem/token-list.mdx index 3e7ab3e..69bc4b4 100644 --- a/ecosystem/token-list.mdx +++ b/ecosystem/token-list.mdx @@ -1,9 +1,9 @@ --- title: Token List -description: Official token registry for TAC Mainnet +description: Official (but not extensive) token registry for TAC Mainnet --- -This repository contains the canonical Token List for TAC Mainnet (Chain ID: 239), providing standardized token metadata for wallets, DEXs, and other applications in the TAC ecosystem. +The table below contains the canonical Token List for the TAC Mainnet (Chain ID: 239), providing standardized token metadata for wallets, DEXs, and other applications in the TAC ecosystem. To add/request a new asset, please refer to this [Github Repo](https://github.com/TacBuild/tokenlist) diff --git a/explorer/overview.mdx b/explorer/overview.mdx new file mode 100644 index 0000000..baa9c44 --- /dev/null +++ b/explorer/overview.mdx @@ -0,0 +1,23 @@ +--- +title: Overview +--- + +Navigate the links below to access real-time data within the TAC blockchain. + + + + + + + Get your tokens on the [Faucet](https://spb.faucet.tac.build) + + + diff --git a/index.mdx b/index.mdx index a9d72c0..68fb958 100644 --- a/index.mdx +++ b/index.mdx @@ -58,47 +58,47 @@ export const HeroCard = ({ lightModeImage="https://i.ibb.co/gM5hWq6P/quick.png.png" darkModeImage="https://i.ibb.co/whv2D8qF/quick-dark.png" title="Quickstart" - description="Deploy your first working hybrid dApp in under 5 minutes" - href="/build/quickstart" + description="Spin up a hybrid dApp locally and send your first testnet cross-chain transaction in under 5 minutes!" + href="/quickstart/overview" /> diff --git a/build/quickstart.mdx b/quickstart/overview.mdx similarity index 85% rename from build/quickstart.mdx rename to quickstart/overview.mdx index 31475e3..8c0886b 100644 --- a/build/quickstart.mdx +++ b/quickstart/overview.mdx @@ -1,5 +1,5 @@ --- -title: Quickstart +title: Overview description: "Get started with TAC development in minutes, building hybrid dApps that connect TON and EVM ecosystems" --- @@ -39,8 +39,9 @@ Get up and running with TAC development quickly by building your first hybrid dA - Blockchain Accounts: - Ethereum wallet with testnet TAC tokens for deployment - TON wallet for testing (Tonkeeper or TON Space recommended) - - Get Testnet Tokens: - - TAC tokens: [TAC Testnet Faucet](https://spb.faucet.tac.build) + - Getting Testnet Tokens: + - Get `TAC` on [TAC Testnet Faucet](https://spb.faucet.tac.build) + - Get `TON` on [TON Testnet Faucet](https://t.me/testgiver_ton_bot) @@ -93,6 +94,10 @@ Get up and running with TAC development quickly by building your first hybrid dA + + Visit the [TON Faucet bot](https://t.me/testgiver_ton_bot) and drip your coins on your TON wallet + + Open your application in the browser and: 1. Click the "Connect Wallet" button @@ -102,7 +107,6 @@ Get up and running with TAC development quickly by building your first hybrid dA The starter app includes a messaging example that demonstrates cross-chain communication from TON to your EVM smart contracts. - @@ -112,7 +116,6 @@ Get up and running with TAC development quickly by building your first hybrid dA 3. **View Results**: See the message stored on the EVM side This demonstrates the complete flow of hybrid dApp interaction. - @@ -132,40 +135,41 @@ Get up and running with TAC development quickly by building your first hybrid dA - Asset bridging between TON and EVM - Multi-step cross-chain workflows - Advanced transaction tracking - + ## Next Steps - - Learn how to deploy and verify Solidity contracts on TAC EVM - - - - Create custom proxy contracts for advanced cross-chain operations - - - - Master the TAC SDK for powerful frontend integrations - - - + Learn how to deploy and verify Solidity contracts on TAC EVM + + + + Create custom proxy contracts for advanced cross-chain operations + + + + Master the TAC SDK for powerful frontend integrations + + + - Set up Hardhat, Foundry, and other development tools - + > + Set up Hardhat, Foundry, and other development tools + + ## Common Issues & Solutions @@ -173,7 +177,7 @@ Get up and running with TAC development quickly by building your first hybrid dA **Check your setup:** - - Verify you have testnet TAC tokens in your deployment wallet + - Verify you have testnet TAC tokens in your deployment wallet (get them in the [Faucet](https://spb.faucet.tac.build)) - Ensure your private key is correctly set in `.env` - Confirm you're using the correct network configuration diff --git a/release-notes/evm.mdx b/release-notes/evm.mdx deleted file mode 100644 index f7fc09e..0000000 --- a/release-notes/evm.mdx +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: TAC EVM -description: "Track TAC EVM updates, breaking changes, and new features across versions" ---- - - - All the new updates, breaking changes, and new features from TAC EVM will be - documented here. - diff --git a/release-notes/overview.mdx b/release-notes/overview.mdx deleted file mode 100644 index 6e8d74d..0000000 --- a/release-notes/overview.mdx +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Overview -description: "Stay updated with the latest changes across TAC's infrastructure, SDK, and development tools" ---- - -Track the latest updates, improvements, and changes across all TAC components. Each section provides detailed changelogs for developers to understand what's new and what might affect their applications. - -## Component Updates - - - - Updates to the TAC SDK including new features, bug - fixes, breaking changes, and API improvements for hybrid dApp development. - - - - Changes to the TON Adapter system including protocol updates, consensus - improvements, and cross-chain messaging enhancements. - - - - TAC EVM Layer updates including network upgrades, new - features, performance improvements, and breaking changes. - - diff --git a/release-notes/sdk.mdx b/release-notes/sdk.mdx deleted file mode 100644 index efe7dcf..0000000 --- a/release-notes/sdk.mdx +++ /dev/null @@ -1,307 +0,0 @@ ---- -title: JavaScript SDK -description: "Track SDK updates, breaking changes, and new features across versions" ---- - -This changelog documents all notable changes to the TAC SDK, including new features, improvements, bug fixes, and breaking changes. - - - -### Added - -- **New Assets Module**: Added classes and utilities for working with FT, NFT, and TON assets, including AssetFactory and AssetCache -- **Logger Components**: ConsoleLogger and NoopLogger for flexible logging configuration - SDK components are silent by default unless logger is provided -- **Simulator Component**: Internal simulation component for TAC-side transaction simulation, gas estimation, and fee calculation -- **Transaction Managers**: TONTransactionManager and TACTransactionManager for handling cross-chain transaction execution -- **TonTxFinalizer**: Utility for verifying transaction tree success on TON blockchain using TON Center API -- **RetryableContractOpener**: Enhanced contract opener for improved SDK stability and reliability -- **Balance Verification**: Automatic balance checking before sending cross-chain transactions -- **Batch Transaction Support**: RawSender can now send transactions in batches (254 for V5R1 wallets, 4 for other wallet versions) -- **Wait Options**: Optional `waitOptions` parameter for OperationTracker methods and `sendCrossChainTransaction(s)` to automatically wait for operation completion -- **AgnosticProxy SDK**: Experimental SDK for building complex DeFi operations with dynamic value replacement (testing only) - -### Changed - -- **Performance Optimizations**: Significantly improved SDK initialization speed by parallelizing blockchain queries and initialization steps -- **Sender Architecture**: Refactored BatchSender, RawSender, and TonConnectSender with improved contractOpener and retryableContractOpener -- **Core Infrastructure**: Updated error handling, structs, utilities, and OperationTracker components -- **Method Signatures**: OperationTracker methods and `sendCrossChainTransaction(s)` now accept optional `waitOptions` for automatic completion waiting - - - - - -### Changed - -- Switched to spb(chain) set of addresses - - - - - -### Added - -- Advanced options to `sendCrossChainTransaction` -- Method to send multiple crosschain transactions at once: `sendCrossChainTransactions` -- Batch sending support for crosschain transactions -- Error handling while sending crosschain transactions - -### Changed - -- TonClient with TAC endpoint as default contract opener - - - - - -### Added - -- `metaInfo` field to the `ExecutionStages` -- LiteSequencerClient to handle lite sequencer requests and its parameters -- Method to calculate tvmExecutorFee: `getTVMExecutorFeeInfo` - -### Changed - -- `getEVMTokenAddress` now automatically normalizes addresses to `EQ` form -- For TAC->TON transactions tvmExecutorFee calculated via lite sequencer - - - - - -### Added - -- Fee support for crosschain transactions -- New methods for requesting execution fees and simulation `getTransactionSimulationInfo` -- Methods to work with NFT items: bridging and getting addresses - -### Changed - -- Switched to v3 sequencer - - - - - -### Changed - -- Changed tvm jetton minter stateInit in `getJettonOpType` - - - - - -### Changed - -- Changed tvm jetton minter stateInit - - - - - -### Changed - -- Fixed bug with crossChainTonAmount in generating jetton payload - - - - - -### Changed - -- Due to an API change, updated the `operationId` retrieval. An empty string will be returned for 404 errors - - - - - -### Changed - -- Fixed bug with V5 wallet - - - - - -### Changed - -- `StageName` value namings -- `startTracking` has been improved. Added optional parameters - -### Removed - -- `ExecutionStagesTableData` type -- `TrackingOperationResult` type - - - - - -### Added - -- `OperationType` type -- `ExecutionStagesTableData` type -- `TrackingOperationResult` type -- `StageName` enum -- `getOperationType` in `OperationTracker` retrieves the `OperationType` for `operationId` - -### Changed - -- The stage names have been changed -- Changed namings in enums -- `OperationType` added in the `ExecutionStages` -- `ExecutionStages` structure -- Added return value in method `sendShardTransaction` in `TonConnectSender` -- Added `forceSend` option in method `sendCrossChainTransaction` in `TacSdk` -- `startTracking` has been improved. Added optional parameters and return values - -### Removed - -- Deleted `isBridgeOperation` (now it can be determined with `getOperationType`) - - - - - -### Changed - -- **Changed package tac-sdk -> @tonappchain/sdk** -- `calculateEVMTokenAddress` function now requires tokenUtils address as deployer and crossChainLayer address as constructor params -- Rename shardedId -> shardsKey -- A `gasLimit` field has been added to `EvmProxyMsg` (defaulting to undefined, which will be set through simulation in this case) -- Renamed json properties in `buildEvmDataCell` -- Renamed urls in `OperationTracker` - -### Added - -- `options` parameter in `getSender` method to modify W5 and Highload V3 wallets -- `customLiteSequencerEndpoints` parameter in `SDKParams` to specify custom lite sequencer endpoints -- `simulateEVMMessage` method in `TacSdk` to simulate EVM message execution on TAC side -- `getOperationStatuses` method in `OperationTracker` retrieves the statuses of multiple operations based on their respective `operationId's` -- `getOperationIdsByShardsKeys` method in `OperationTracker` retrieves the `operationId's` based on their respective `shardsKey's` -- `getStageProfilings` method in `OperationTracker` retrieves the `ExecutionStages's` based on their respective `operationId's` -- `getStageProfiling` method in `OperationTracker` retrieves the `ExecutionStages` for `operationId` -- Added a pre-check before sending to the blockchain to ensure the transaction will execute successfully on the TAC side using the `simulateEVMMessage` method -- Support for highload V3 wallet as a sender - - - - - -### Added - -- Contract opener `orbsOpener4` that uses new version TON endpoints - -### Changed - -- `orbsOpener4` set as default in SDK - - - - - -### Changed - -- `@tonappchain/artifacts` upgraded to `0.0.14` - - - - - -### Added - -- `getUserJettonBalanceExtended` method in `TacSdk` to get user jetton balance extended with decimals info - -### Changed - -- `AssetBridgingData` now supports multiple formats of asset value: with decimals and without decimals. In case decimals are not provided, the SDK will try to extract it from chain - - - - - -### Added - -- Section in readme about TACHeader -- AddLiquidity uniswap_v2 test -- `orbsOpener` method to construct custom contractOpener for TacSDK. It uses Orbs Network and does not have rate limits - -### Changed - -- SDK uses orbsOpener by default -- `address` field in `AssetBridgingData` can be either EVM or TVM address -- Method `SenderFactory.getSender` requires additional parameter `network` when creating wallet wrapper using mnemonic -- Fixed `getContractState` in `liteClientOpener` -- Fixed all tests for TACHeader logic -- Version `@tonappchain/artifacts` upgraded to `0.0.12-addresses` -- Request to `/status` endpoint of Sequencer API changed from `GET` to `POST` with body -- Signature of `getOperationStatus` is changed - -### Removed - -- Deleted test bridgeData - - - - - -### Changed - -- Calculate token addresses through emulation -- Renamed `TransactionStatus` to `OperationTracker` -- Renamed method `OperationTracker.getStatusTransaction()` to `OperationTracker.getOperationStatus()` -- Renamed method `OperationTracker.getSimpifiedTransactionStatus()` to `OperationTracker.getSimplifiedOperationStatus()` -- Renamed `TacSDKTonClientParams` to `SDKParams` -- Changed struct of `SDKParams` -- Changed `ton-lite-client` library to its fork `@tonappchain/ton-lite-client` - -### Added - -- Custom `TONParams` and `TACParams` in `SDKParams` -- `network` and `customLiteSequencerEndpoints` params to `OperationTracker` constructor -- Static async function `create` in `TacSdk` for creating an instance of `TacSdk` -- Custom errors -- Methods that may construct custom contractOpener for TacSDK -- Method `closeConnections` in `TacSdk` for closing all network connections -- Optional method `closeConnections` to `ContractOpener` interface - -### Removed - -- `init` function in `TacSdk` -- Public constructor of `TacSdk` - - - - - -### Added - -- Method to get TVM address based on EVM address -- Tests for SDK methods using contract emulation -- Support for custom contract opener -- SDK uses @tonappchain/artifacts -- Added get methods for native token addresses -- Added support for native token address calculation in _getEVMTokenAddress_ and _getTVMTokenAddress_ methods - -### Removed - -- Support for TON wallet v1 - - - - - -### Added - -- Code formatting - - - - - -### Added - -- Support for all versions of TON wallet (v1 - v5) -- SenderFactory to create AbstractSender - - diff --git a/release-notes/ton-adapter.mdx b/release-notes/ton-adapter.mdx deleted file mode 100644 index 738f2d6..0000000 --- a/release-notes/ton-adapter.mdx +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: TON Adapter -description: "Track TON Adapter updates, breaking changes, and new features across versions" ---- - - - All the new updates, breaking changes, and new features from TON Adapter will - be documented here. - diff --git a/sdk/overview.mdx b/sdk/overview.mdx new file mode 100644 index 0000000..b8ee8ca --- /dev/null +++ b/sdk/overview.mdx @@ -0,0 +1,24 @@ +Developer's kits to build hybrid dApps. Stay updated with the latest changes across TAC's development tools. + +## Components + + + + Build hybrid dApp using TypeScript.
+ @tonappchain/sdk +
+ + + Build hybrid dApp using Python.
+ tac-sdk +
+ +
diff --git a/sdk/python-sdk.mdx b/sdk/python-sdk.mdx new file mode 100644 index 0000000..e721819 --- /dev/null +++ b/sdk/python-sdk.mdx @@ -0,0 +1,32 @@ +--- +title: Python SDK +description: Download from tac-sdk +--- + +## Changelog + +Below are listed the notable changes to the tac-sdk, including new features, improvements, bug fixes, and breaking changes. + + + +### Added + +- **New Precheck Helper**: Added helper utilities for bridging WETH and cbBTC through `ETH<->TAC<->TON` routes + + + + + + ### Changed + + - **Dependency management**: Moved to `poetry` + + + + + + ### Initialized + + - Ported all already existing functionality from TypeScript SDK + + \ No newline at end of file diff --git a/sdk/ts-sdk.mdx b/sdk/ts-sdk.mdx new file mode 100644 index 0000000..1a6d7e5 --- /dev/null +++ b/sdk/ts-sdk.mdx @@ -0,0 +1,350 @@ +--- +title: TypeScript SDK +description: Download from @tonappchain/sdk +--- + +## Changelog + +Below are listed the notable changes to the @tonappchain/sdk, including new features, improvements, bug fixes, and breaking changes. + + + + ### Added + - TEP-526 support for scaled UI in FT tokens with display multiplier functionality (display multiplier caching with 5-minute TTL for FT assets) + - Fee parameter constants and factory functions for transaction fee calculation steps. + - Automatic TON blockchain fee parameters retrieval from network config with fallback to standard values. + - Enhanced transaction tracking with failure case handling and track params. + - TacSdk support for preparing cross-chain payloads. + - New `TacExplorerClient` class for interacting with TAC Explorer API. + - `getTransactions()` method added to `ContractOpener` interface for standardized transaction fetching. + + ### Changed + - `Configuration` class now retrieves and stores TON fee parameters during initialization. + - Refactored transaction finalization logic for improved speed and reliability. + - Refactoring of ContractOpener architecture: + - All openers converted to class-based implementations extending `BaseContractOpener`: + - `TonClientOpener`: TonClient implementation. + - `TonClient4Opener`: TonClient4 implementation. + - `LiteClientOpener`: LiteClient implementation with connection management. + - `SandboxOpener`: Sandbox testing implementation. + - Eliminated code duplication by moving common logic to base class: + - `getTransactionByHash()`: Transaction lookup with retry logic. + - `getAdjacentTransactions()`: Child and parent transaction discovery. + - `trackTransactionTree()`: Full transaction tree validation. + - Each opener now implements only provider-specific methods (`open`, `getContractState`, `getTransactions`, `getAddressInformation`, `getConfig`). + - Removed `helpers.ts` file - functionality integrated into `BaseContractOpener`. + - Shared utility functions in `OpenerUtils.ts`: + - `getHttpEndpointWithRetry()`: Unified HTTP endpoint retrieval with retry logic. + - `getHttpV4EndpointWithRetry()`: Unified HTTP V4 endpoint retrieval with retry logic. + - Transaction tree validation errors now always include transaction hash, `exitCode`, and `resultCode` for better debugging. + + + + + + ### Changed + + - Fixed bug with evm address of `TON` in `normalizeAssets`. + + + + + + ### Added + + - **New Assets Module**: Added classes and utilities for working with FT, NFT, and TON assets, including AssetFactory and AssetCache + - **Logger Components**: ConsoleLogger and NoopLogger for flexible logging configuration - SDK components are silent by default unless logger is provided + - **Simulator Component**: Internal simulation component for TAC-side transaction simulation, gas estimation, and fee calculation + - **Transaction Managers**: TONTransactionManager and TACTransactionManager for handling cross-chain transaction execution + - **TonTxFinalizer**: Utility for verifying transaction tree success on TON blockchain using TON Center API + - **RetryableContractOpener**: Enhanced contract opener for improved SDK stability and reliability + - **Balance Verification**: Automatic balance checking before sending cross-chain transactions + - **Batch Transaction Support**: RawSender can now send transactions in batches (254 for V5R1 wallets, 4 for other wallet versions) + - **Wait Options**: Optional `waitOptions` parameter for OperationTracker methods and `sendCrossChainTransaction(s)` to automatically wait for operation completion + - **AgnosticProxy SDK**: Experimental SDK for building complex DeFi operations with dynamic value replacement (testing only) + + ### Changed + + - **Performance Optimizations**: Significantly improved SDK initialization speed by parallelizing blockchain queries and initialization steps + - **Sender Architecture**: Refactored BatchSender, RawSender, and TonConnectSender with improved contractOpener and retryableContractOpener + - **Core Infrastructure**: Updated error handling, structs, utilities, and OperationTracker components + - **Method Signatures**: OperationTracker methods and `sendCrossChainTransaction(s)` now accept optional `waitOptions` for automatic completion waiting + + + + + + ### Changed + + - Switched to spb(chain) set of addresses + + + + + + ### Added + + - Advanced options to `sendCrossChainTransaction` + - Method to send multiple crosschain transactions at once: `sendCrossChainTransactions` + - Batch sending support for crosschain transactions + - Error handling while sending crosschain transactions + + ### Changed + + - TonClient with TAC endpoint as default contract opener + + + + + + ### Added + + - `metaInfo` field to the `ExecutionStages` + - LiteSequencerClient to handle lite sequencer requests and its parameters + - Method to calculate tvmExecutorFee: `getTVMExecutorFeeInfo` + + ### Changed + + - `getEVMTokenAddress` now automatically normalizes addresses to `EQ` form + - For TAC->TON transactions tvmExecutorFee calculated via lite sequencer + + + + + + ### Added + + - Fee support for crosschain transactions + - New methods for requesting execution fees and simulation `getTransactionSimulationInfo` + - Methods to work with NFT items: bridging and getting addresses + + ### Changed + + - Switched to v3 sequencer + + + + + + ### Changed + + - Changed tvm jetton minter stateInit in `getJettonOpType` + + + + + + ### Changed + + - Changed tvm jetton minter stateInit + + + + + + ### Changed + + - Fixed bug with crossChainTonAmount in generating jetton payload + + + + + + ### Changed + + - Due to an API change, updated the `operationId` retrieval. An empty string will be returned for 404 errors + + + + + + ### Changed + + - Fixed bug with V5 wallet + + + + + + ### Changed + + - `StageName` value namings + - `startTracking` has been improved. Added optional parameters + + ### Removed + + - `ExecutionStagesTableData` type + - `TrackingOperationResult` type + + + + + + ### Added + + - `OperationType` type + - `ExecutionStagesTableData` type + - `TrackingOperationResult` type + - `StageName` enum + - `getOperationType` in `OperationTracker` retrieves the `OperationType` for `operationId` + + ### Changed + + - The stage names have been changed + - Changed namings in enums + - `OperationType` added in the `ExecutionStages` + - `ExecutionStages` structure + - Added return value in method `sendShardTransaction` in `TonConnectSender` + - Added `forceSend` option in method `sendCrossChainTransaction` in `TacSdk` + - `startTracking` has been improved. Added optional parameters and return values + + ### Removed + + - Deleted `isBridgeOperation` (now it can be determined with `getOperationType`) + + + + + + ### Changed + + - **Changed package tac-sdk -> @tonappchain/sdk** + - `calculateEVMTokenAddress` function now requires tokenUtils address as deployer and crossChainLayer address as constructor params + - Rename shardedId -> shardsKey + - A `gasLimit` field has been added to `EvmProxyMsg` (defaulting to undefined, which will be set through simulation in this case) + - Renamed json properties in `buildEvmDataCell` + - Renamed urls in `OperationTracker` + + ### Added + + - `options` parameter in `getSender` method to modify W5 and Highload V3 wallets + - `customLiteSequencerEndpoints` parameter in `SDKParams` to specify custom lite sequencer endpoints + - `simulateEVMMessage` method in `TacSdk` to simulate EVM message execution on TAC side + - `getOperationStatuses` method in `OperationTracker` retrieves the statuses of multiple operations based on their respective `operationId's` + - `getOperationIdsByShardsKeys` method in `OperationTracker` retrieves the `operationId's` based on their respective `shardsKey's` + - `getStageProfilings` method in `OperationTracker` retrieves the `ExecutionStages's` based on their respective `operationId's` + - `getStageProfiling` method in `OperationTracker` retrieves the `ExecutionStages` for `operationId` + - Added a pre-check before sending to the blockchain to ensure the transaction will execute successfully on the TAC side using the `simulateEVMMessage` method + - Support for highload V3 wallet as a sender + + + + + + ### Added + + - Contract opener `orbsOpener4` that uses new version TON endpoints + + ### Changed + + - `orbsOpener4` set as default in SDK + + + + + + ### Changed + + - `@tonappchain/artifacts` upgraded to `0.0.14` + + + + + + ### Added + + - `getUserJettonBalanceExtended` method in `TacSdk` to get user jetton balance extended with decimals info + + ### Changed + + - `AssetBridgingData` now supports multiple formats of asset value: with decimals and without decimals. In case decimals are not provided, the SDK will try to extract it from chain + + + + + + ### Added + + - Section in readme about TACHeader + - AddLiquidity uniswap_v2 test + - `orbsOpener` method to construct custom contractOpener for TacSDK. It uses Orbs Network and does not have rate limits + + ### Changed + + - SDK uses orbsOpener by default + - `address` field in `AssetBridgingData` can be either EVM or TVM address + - Method `SenderFactory.getSender` requires additional parameter `network` when creating wallet wrapper using mnemonic + - Fixed `getContractState` in `liteClientOpener` + - Fixed all tests for TACHeader logic + - Version `@tonappchain/artifacts` upgraded to `0.0.12-addresses` + - Request to `/status` endpoint of Sequencer API changed from `GET` to `POST` with body + - Signature of `getOperationStatus` is changed + + ### Removed + + - Deleted test bridgeData + + + + + + ### Changed + + - Calculate token addresses through emulation + - Renamed `TransactionStatus` to `OperationTracker` + - Renamed method `OperationTracker.getStatusTransaction()` to `OperationTracker.getOperationStatus()` + - Renamed method `OperationTracker.getSimpifiedTransactionStatus()` to `OperationTracker.getSimplifiedOperationStatus()` + - Renamed `TacSDKTonClientParams` to `SDKParams` + - Changed struct of `SDKParams` + - Changed `ton-lite-client` library to its fork `@tonappchain/ton-lite-client` + + ### Added + + - Custom `TONParams` and `TACParams` in `SDKParams` + - `network` and `customLiteSequencerEndpoints` params to `OperationTracker` constructor + - Static async function `create` in `TacSdk` for creating an instance of `TacSdk` + - Custom errors + - Methods that may construct custom contractOpener for TacSDK + - Method `closeConnections` in `TacSdk` for closing all network connections + - Optional method `closeConnections` to `ContractOpener` interface + + ### Removed + + - `init` function in `TacSdk` + - Public constructor of `TacSdk` + + + + + + ### Added + + - Method to get TVM address based on EVM address + - Tests for SDK methods using contract emulation + - Support for custom contract opener + - SDK uses @tonappchain/artifacts + - Added get methods for native token addresses + - Added support for native token address calculation in _getEVMTokenAddress_ and _getTVMTokenAddress_ methods + + ### Removed + + - Support for TON wallet v1 + + + + + + ### Added + + - Code formatting + + + + + + ### Added + + - Support for all versions of TON wallet (v1 - v5) + - SenderFactory to create AbstractSender + +