பிரதான உள்ளடக்கத்திற்குச் செல்
Change page

ERC-1363 செலுத்தக்கூடிய டோக்கன் தரநிலை

பக்கத்தின் கடைசி புதுப்பிப்பு: 4 ஏப்ரல், 2025

அறிமுகம்

ERC-1363 என்றால் என்ன?

ERC-1363 என்பது ERC-20 டோக்கன்களுக்கான ஒரு நீட்டிப்பு இடைமுகமாகும், இது இடமாற்றங்களுக்குப் பிறகு பெறுநர் ஒப்பந்தத்திலோ அல்லது ஒப்புதல்களுக்குப் பிறகு செலவு செய்பவரின் ஒப்பந்தத்திலோ தனிப்பயன் தர்க்கத்தைச் செயல்படுத்துவதை ஆதரிக்கிறது, இவை அனைத்தும் ஒரே பரிவர்த்தனையில் நடக்கும்.

ERC-20 இலிருந்து வேறுபாடுகள்

transfer, transferFrom மற்றும் approve போன்ற நிலையான ERC-20 செயல்பாடுகள், தனி பரிவர்த்தனை இல்லாமல் பெறுநர் அல்லது செலவு செய்பவர் ஒப்பந்தத்தில் குறியீட்டை இயக்க அனுமதிக்காது. இது UI மேம்பாட்டில் சிக்கலை அறிமுகப்படுத்துகிறது மற்றும் தத்தெடுப்பதில் தடையை ஏற்படுத்துகிறது. ஏனெனில் பயனர்கள் முதல் பரிவர்த்தனை செயல்படுத்தப்படும் வரை காத்திருந்து பின்னர் இரண்டாவதைச் சமர்ப்பிக்க வேண்டும். அவர்கள் GAS-ஐ இரண்டு முறை செலுத்த வேண்டும்.

ERC-1363 மாற்றத்தக்க டோக்கன்களை மிகவும் எளிதாகச் செயல்களைச் செய்யக்கூடியதாகவும், எந்த ஆஃப்-செயின் கேட்பவரையும் பயன்படுத்தாமல் வேலை செய்வதாகவும் ஆக்குகிறது. இது ஒரே பரிவர்த்தனையில், ஒரு இடமாற்றம் அல்லது ஒப்புதலுக்குப் பிறகு, பெறுநர் அல்லது செலவு செய்பவர் ஒப்பந்தத்தில் ஒரு கால்பேக்கைச் செய்ய அனுமதிக்கிறது.

முன்னேற்றக் கட்டுரை

இந்தப் பக்கத்தை நன்கு புரிந்து கொள்ள, நீங்கள் முதலில் இதைப் பற்றிப் படிக்கப் பரிந்துரைக்கிறோம்:

உள்ளடக்கம்

ERC-1363, transfer, transferFrom அல்லது approve க்குப் பிறகு ஸ்மார்ட் ஒப்பந்தங்களுடன் தொடர்பு கொள்ள ERC-20 டோக்கன்களுக்கான ஒரு நிலையான API-ஐ அறிமுகப்படுத்துகிறது.

இந்தத் தரநிலை டோக்கன்களை மாற்றுவதற்கான அடிப்படைச் செயல்பாடுகளை வழங்குகிறது, அத்துடன் டோக்கன்கள் மற்றொரு ஆன்-செயின் மூன்றாம் தரப்பினரால் செலவழிக்கப்படுவதற்காக அங்கீகரிக்கப்பட அனுமதிக்கிறது, பின்னர் பெறுநர் அல்லது செலவு செய்பவர் ஒப்பந்தத்தில் ஒரு கால்பேக்கைச் செய்கிறது.

ERC-20 கால்பேக்குகளை ஏற்கக்கூடிய ஸ்மார்ட் ஒப்பந்தங்களின் பல முன்மொழியப்பட்ட பயன்பாடுகள் உள்ளன.

எடுத்துக்காட்டுகள்:

  • கூட்ட விற்பனை: அனுப்பப்பட்ட டோக்கன்கள் உடனடி வெகுமதி ஒதுக்கீட்டைத் தூண்டுகின்றன.
  • சேவைகள்: செலுத்துதல் ஒரே படியில் சேவை அணுகலைச் செயல்படுத்துகிறது.
  • விலைப்பட்டியல்: டோக்கன்கள் விலைப்பட்டியல்களைத் தானாகவே தீர்க்கின்றன.
  • சந்தாக்கள்: வருடாந்திர விகிதத்தை அங்கீகரிப்பது முதல் மாத கட்டணத்திற்குள் சந்தாவைச் செயல்படுத்துகிறது.

இந்தக் காரணங்களுக்காக இது முதலில் "Payable Token" என்று பெயரிடப்பட்டது.

கால்பேக் நடத்தை அதன் பயன்பாட்டை மேலும் விரிவுபடுத்துகிறது, இது போன்ற தடையற்ற தொடர்புகளை செயல்படுத்துகிறது:

  • ஸ்டேக்கிங்: மாற்றப்பட்ட டோக்கன்கள் ஒரு ஸ்டேக்கிங் ஒப்பந்தத்தில் தானியங்கிப் பூட்டுதலைத் தூண்டுகின்றன.
  • வாக்களிப்பு: பெறப்பட்ட டோக்கன்கள் ஒரு ஆளுகை அமைப்பில் வாக்குகளைப் பதிவு செய்கின்றன.
  • ஸ்வாப்பிங்: டோக்கன் ஒப்புதல்கள் ஒரே படியில் ஸ்வாப் தர்க்கத்தைச் செயல்படுத்துகின்றன.

ஒரு இடமாற்றம் அல்லது பெறப்பட்ட ஒப்புதலுக்குப் பிறகு ஒரு கால்பேக் செயல்படுத்தப்பட வேண்டிய அனைத்து நிகழ்வுகளிலும் குறிப்பிட்ட பயன்பாடுகளுக்கு ERC-1363 டோக்கன்களைப் பயன்படுத்தலாம். டோக்கன்களைக் கையாளும் பெறுநரின் திறனைச் சரிபார்ப்பதன் மூலம் ஸ்மார்ட் ஒப்பந்தங்களில் டோக்கன் இழப்பு அல்லது டோக்கன் பூட்டுதலைத் தவிர்ப்பதற்கும் ERC-1363 பயனுள்ளதாக இருக்கும்.

மற்ற ERC-20 நீட்டிப்பு முன்மொழிவுகளைப் போலல்லாமல், ERC-1363 ஆனது ERC-20 transfer மற்றும் transferFrom முறைகளை மேலெழுதாது மற்றும் ERC-20 உடன் பின்னோக்கிய இணக்கத்தன்மையைப் பேணுவதன் மூலம் செயல்படுத்தப்பட வேண்டிய இடைமுக ID-க்களை வரையறுக்கிறது.

EIP-1363opens in a new tab இலிருந்து:

முறைகள்

ERC-1363 தரநிலையைச் செயல்படுத்தும் ஸ்மார்ட் ஒப்பந்தங்கள், ERC1363 இடைமுகத்தில் உள்ள அனைத்துச் செயல்பாடுகளையும், ERC20 மற்றும் ERC165 இடைமுகங்களையும் கட்டாயம் செயல்படுத்த வேண்டும்.

1pragma solidity ^0.8.0;
2
3/**
4 * @title ERC1363
5 * @dev `transfer` அல்லது `transferFrom` க்குப் பிறகு ஒரு பெறுநர் ஒப்பந்தத்தில் குறியீட்டைச் செயல்படுத்துவதை ஆதரிக்கும் ERC-20 டோக்கன்களுக்கான ஒரு நீட்டிப்பு இடைமுகம்
6 * அல்லது `approve` க்குப் பிறகு ஒரு செலவு செய்பவர் ஒப்பந்தத்தில் குறியீடு, ஒரே பரிவர்த்தனையில்.
7 */
8interface ERC1363 is ERC20, ERC165 {
9 /*
10 * குறிப்பு: இந்த இடைமுகத்திற்கான ERC-165 அடையாளங்காட்டி 0xb0202a11 ஆகும்.
11 * 0xb0202a11 ===
12 * bytes4(keccak256('transferAndCall(address,uint256)')) ^
13 * bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^
14 * bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^
15 * bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^
16 * bytes4(keccak256('approveAndCall(address,uint256)')) ^
17 * bytes4(keccak256('approveAndCall(address,uint256,bytes)'))
18 */
19
20 /**
21 * @dev அழைப்பாளரின் கணக்கிலிருந்து `to` க்கு `value` அளவு டோக்கன்களை நகர்த்தி
22 * பின்னர் `to` இல் `ERC1363Receiver::onTransferReceived` ஐ அழைக்கிறது.
23 * @param to டோக்கன்கள் மாற்றப்படும் முகவரி.
24 * @param value மாற்றப்பட வேண்டிய டோக்கன்களின் அளவு.
25 * @return எறியாத வரை செயல்பாடு வெற்றி பெற்றதைக் குறிக்கும் ஒரு பூலியன் மதிப்பு.
26 */
27 function transferAndCall(address to, uint256 value) external returns (bool);
28
29 /**
30 * @dev அழைப்பாளரின் கணக்கிலிருந்து `to` க்கு `value` அளவு டோக்கன்களை நகர்த்தி
31 * பின்னர் `to` இல் `ERC1363Receiver::onTransferReceived` ஐ அழைக்கிறது.
32 * @param to டோக்கன்கள் மாற்றப்படும் முகவரி.
33 * @param value மாற்றப்பட வேண்டிய டோக்கன்களின் அளவு.
34 * @param data குறிப்பிட்ட வடிவமைப்பு இல்லாத கூடுதல் தரவு, `to` க்கான அழைப்பில் அனுப்பப்பட்டது.
35 * @return எறியாத வரை செயல்பாடு வெற்றி பெற்றதைக் குறிக்கும் ஒரு பூலியன் மதிப்பு.
36 */
37 function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool);
38
39 /**
40 * @dev ஒதுக்கீட்டு பொறிமுறையைப் பயன்படுத்தி `from` இலிருந்து `to` க்கு `value` அளவு டோக்கன்களை நகர்த்தி
41 * பின்னர் `to` இல் `ERC1363Receiver::onTransferReceived` ஐ அழைக்கிறது.
42 * @param from டோக்கன்களை அனுப்ப வேண்டிய முகவரி.
43 * @param to டோக்கன்கள் மாற்றப்படும் முகவரி.
44 * @param value மாற்றப்பட வேண்டிய டோக்கன்களின் அளவு.
45 * @return எறியாத வரை செயல்பாடு வெற்றி பெற்றதைக் குறிக்கும் ஒரு பூலியன் மதிப்பு.
46 */
47 function transferFromAndCall(address from, address to, uint256 value) external returns (bool);
48
49 /**
50 * @dev ஒதுக்கீட்டு பொறிமுறையைப் பயன்படுத்தி `from` இலிருந்து `to` க்கு `value` அளவு டோக்கன்களை நகர்த்தி
51 * பின்னர் `to` இல் `ERC1363Receiver::onTransferReceived` ஐ அழைக்கிறது.
52 * @param from டோக்கன்களை அனுப்ப வேண்டிய முகவரி.
53 * @param to டோக்கன்கள் மாற்றப்படும் முகவரி.
54 * @param value மாற்றப்பட வேண்டிய டோக்கன்களின் அளவு.
55 * @param data குறிப்பிட்ட வடிவமைப்பு இல்லாத கூடுதல் தரவு, `to` க்கான அழைப்பில் அனுப்பப்பட்டது.
56 * @return எறியாத வரை செயல்பாடு வெற்றி பெற்றதைக் குறிக்கும் ஒரு பூலியன் மதிப்பு.
57 */
58 function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool);
59
60 /**
61 * @dev அழைப்பாளரின் டோக்கன்களின் மீது `spender` இன் ஒதுக்கீடாக `value` அளவு டோக்கன்களை அமைத்து
62 * பின்னர் `spender` இல் `ERC1363Spender::onApprovalReceived` ஐ அழைக்கிறது.
63 * @param spender நிதியைச் செலவிடும் முகவரி.
64 * @param value செலவழிக்கப்பட வேண்டிய டோக்கன்களின் அளவு.
65 * @return எறியாத வரை செயல்பாடு வெற்றி பெற்றதைக் குறிக்கும் ஒரு பூலியன் மதிப்பு.
66 */
67 function approveAndCall(address spender, uint256 value) external returns (bool);
68
69 /**
70 * @dev அழைப்பாளரின் டோக்கன்களின் மீது `spender` இன் ஒதுக்கீடாக `value` அளவு டோக்கன்களை அமைத்து
71 * பின்னர் `spender` இல் `ERC1363Spender::onApprovalReceived` ஐ அழைக்கிறது.
72 * @param spender நிதியைச் செலவிடும் முகவரி.
73 * @param value செலவழிக்கப்பட வேண்டிய டோக்கன்களின் அளவு.
74 * @param data குறிப்பிட்ட வடிவமைப்பு இல்லாத கூடுதல் தரவு, `spender` க்கான அழைப்பில் அனுப்பப்பட்டது.
75 * @return எறியாத வரை செயல்பாடு வெற்றி பெற்றதைக் குறிக்கும் ஒரு பூலியன் மதிப்பு.
76 */
77 function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);
78}
79
80interface ERC20 {
81 event Transfer(address indexed from, address indexed to, uint256 value);
82 event Approval(address indexed owner, address indexed spender, uint256 value);
83 function transfer(address to, uint256 value) external returns (bool);
84 function transferFrom(address from, address to, uint256 value) external returns (bool);
85 function approve(address spender, uint256 value) external returns (bool);
86 function totalSupply() external view returns (uint256);
87 function balanceOf(address account) external view returns (uint256);
88 function allowance(address owner, address spender) external view returns (uint256);
89}
90
91interface ERC165 {
92 function supportsInterface(bytes4 interfaceId) external view returns (bool);
93}
அனைத்தையும் காட்டு

transferAndCall அல்லது transferFromAndCall வழியாக ERC-1363 டோக்கன்களை ஏற்க விரும்பும் ஒரு ஸ்மார்ட் ஒப்பந்தம் கட்டாயம் ERC1363Receiver இடைமுகத்தைச் செயல்படுத்த வேண்டும்:

1/**
2 * @title ERC1363Receiver
3 * @dev ERC-1363 டோக்கன் ஒப்பந்தங்களிலிருந்து `transferAndCall` அல்லது `transferFromAndCall` ஐ ஆதரிக்க விரும்பும் எந்தவொரு ஒப்பந்தத்திற்கான இடைமுகம்.
4 */
5interface ERC1363Receiver {
6 /**
7 * @dev இந்த ஒப்பந்தத்திற்கு ERC-1363 டோக்கன்கள் `ERC1363::transferAndCall` அல்லது `ERC1363::transferFromAndCall` வழியாக மாற்றப்படும் போதெல்லாம்
8 * `from` இலிருந்து `operator` மூலம், இந்த செயல்பாடு அழைக்கப்படுகிறது.
9 *
10 * குறிப்பு: இடமாற்றத்தை ஏற்க, இது திரும்ப வேண்டும்
11 * `bytes4(keccak256("onTransferReceived(address,address,uint256,bytes)"))`
12 * (அதாவது 0x88a7ca5c, அல்லது அதன் சொந்த செயல்பாட்டு தேர்வி).
13 *
14 * @param operator `transferAndCall` அல்லது `transferFromAndCall` செயல்பாட்டை அழைத்த முகவரி.
15 * @param from டோக்கன்கள் மாற்றப்பட்ட முகவரி.
16 * @param value மாற்றப்பட்ட டோக்கன்களின் அளவு.
17 * @param data குறிப்பிட்ட வடிவமைப்பு இல்லாத கூடுதல் தரவு.
18 * @return இடமாற்றம் அனுமதிக்கப்பட்டால் `bytes4(keccak256("onTransferReceived(address,address,uint256,bytes)"))` எறியாத வரை.
19 */
20 function onTransferReceived(address operator, address from, uint256 value, bytes calldata data) external returns (bytes4);
21}
அனைத்தையும் காட்டு

approveAndCall வழியாக ERC-1363 டோக்கன்களை ஏற்க விரும்பும் ஒரு ஸ்மார்ட் ஒப்பந்தம் கட்டாயம் ERC1363Spender இடைமுகத்தைச் செயல்படுத்த வேண்டும்:

1/**
2 * @title ERC1363Spender
3 * @dev ERC-1363 டோக்கன் ஒப்பந்தங்களிலிருந்து `approveAndCall` ஐ ஆதரிக்க விரும்பும் எந்தவொரு ஒப்பந்தத்திற்கான இடைமுகம்.
4 */
5interface ERC1363Spender {
6 /**
7 * @dev ஒரு ERC-1363 டோக்கன் `owner` இந்த ஒப்பந்தத்தை `ERC1363::approveAndCall` வழியாக அங்கீகரிக்கும் போதெல்லாம்
8 * தங்கள் டோக்கன்களைச் செலவழிக்க, இந்த செயல்பாடு அழைக்கப்படுகிறது.
9 *
10 * குறிப்பு: ஒப்புதலை ஏற்க, இது திரும்ப வேண்டும்
11 * `bytes4(keccak256("onApprovalReceived(address,uint256,bytes)"))`
12 * (அதாவது 0x7b04a2d0, அல்லது அதன் சொந்த செயல்பாட்டு தேர்வி).
13 *
14 * @param owner `approveAndCall` செயல்பாட்டை அழைத்த மற்றும் முன்னர் டோக்கன்களை வைத்திருந்த முகவரி.
15 * @param value செலவழிக்கப்பட வேண்டிய டோக்கன்களின் அளவு.
16 * @param data குறிப்பிட்ட வடிவமைப்பு இல்லாத கூடுதல் தரவு.
17 * @return ஒப்புதல் அனுமதிக்கப்பட்டால் `bytes4(keccak256("onApprovalReceived(address,uint256,bytes)"))` எறியாத வரை.
18 */
19 function onApprovalReceived(address owner, uint256 value, bytes calldata data) external returns (bytes4);
20}
அனைத்தையும் காட்டு

மேலும் வாசிக்க

இந்தக் கட்டுரை உதவியாக இருந்ததா?