ప్రధాన కంటెంట్‌కి స్కిప్ చేయండి
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 క్యాల్‌బ్యాక్‌లను అంగీకరించగల స్మార్ట్ కాంట్రాక్ట్‌ల యొక్క అనేక ప్రతిపాదిత ఉపయోగాలు ఉన్నాయి.

ఉదాహరణలు కావచ్చు:

  • క్రౌడ్‌సేల్స్: పంపిన టోకెన్‌లు తక్షణ రివార్డ్ కేటాయింపును ప్రేరేపిస్తాయి.
  • సేవలు: చెల్లింపు ఒకే దశలో సేవా యాక్సెస్‌ను సక్రియం చేస్తుంది.
  • ఇన్‌వాయిస్‌లు: టోకెన్‌లు ఇన్‌వాయిస్‌లను స్వయంచాలకంగా పరిష్కరిస్తాయి.
  • చందాలు: వార్షిక రేటును ఆమోదించడం మొదటి నెల చెల్లింపులోనే చందాను సక్రియం చేస్తుంది.

ఈ కారణాల వల్ల దీనికి మొదట "చెల్లించదగిన టోకెన్" అని పేరు పెట్టారు.

క్యాల్‌బ్యాక్ ప్రవర్తన దాని ప్రయోజనాన్ని మరింత విస్తరిస్తుంది, ఇలాంటి అతుకులు లేని పరస్పర చర్యలను ప్రారంభిస్తుంది:

  • స్టేకింగ్: బదిలీ చేయబడిన టోకెన్‌లు స్టేకింగ్ ఒప్పందంలో ఆటోమేటిక్ లాకింగ్‌ను ప్రేరేపిస్తాయి.
  • ఓటింగ్: స్వీకరించిన టోకెన్‌లు పరిపాలన వ్యవస్థలో ఓట్లను నమోదు చేస్తాయి.
  • స్వాపింగ్: టోకెన్ ఆమోదాలు ఒకే దశలో స్వాప్ లాజిక్‌ను సక్రియం చేస్తాయి.

బదిలీ లేదా ఆమోదం స్వీకరించిన తర్వాత క్యాల్‌బ్యాక్ అమలు చేయాల్సిన అన్ని సందర్భాల్లో నిర్దిష్ట ప్రయోజనాల కోసం ERC-1363 టోకెన్‌లను ఉపయోగించవచ్చు. గ్రహీత టోకెన్‌లను నిర్వహించగల సామర్థ్యాన్ని ధృవీకరించడం ద్వారా స్మార్ట్ కాంట్రాక్ట్‌లలో టోకెన్ నష్టం లేదా టోకెన్ లాకింగ్‌ను నివారించడానికి కూడా ERC-1363 ఉపయోగపడుతుంది.

ఇతర ERC-20 పొడిగింపు ప్రతిపాదనల మాదిరిగా కాకుండా, ERC-1363 ERC-20 transfer మరియు transferFrom పద్ధతులను భర్తీ చేయదు మరియు ERC-20తో వెనుకబడిన అనుకూలతను కొనసాగిస్తూ అమలు చేయాల్సిన ఇంటర్‌ఫేస్ IDలను నిర్వచిస్తుంది.

EIP-1363 (opens in a new tab) నుండి:

పద్ధతులు

ERC-1363 ప్రమాణాన్ని అమలు చేసే స్మార్ట్ కాంట్రాక్టులు ERC1363 ఇంటర్‌ఫేస్‌లోని అన్ని ఫంక్షన్‌లను, అలాగే ERC20 మరియు ERC165 ఇంటర్‌ఫేస్‌లను తప్పక అమలు చేయాలి.

1pragma solidity ^0.8.0;
2
3/**
4 * @title ERC1363
5 * @dev ERC-20 టోకెన్‌ల కోసం ఒక విస్తరణ ఇంటర్‌ఫేస్, ఇది `transfer` లేదా `transferFrom` తర్వాత గ్రహీత ఒప్పందంపై కోడ్‌ను అమలు చేయడానికి, లేదా `approve` తర్వాత ఖర్చు చేసే ఒప్పందంపై కోడ్‌ను, ఒకే లావాదేవీలో అమలు చేయడానికి మద్దతు ఇస్తుంది.
6 */
7interface ERC1363 is ERC20, ERC165 {
8 /*
9 * గమనిక: ఈ ఇంటర్‌ఫేస్ కోసం ERC-165 ఐడెంటిఫైయర్ 0xb0202a11.
10 * 0xb0202a11 ===
11 * bytes4(keccak256('transferAndCall(address,uint256)')) ^
12 * bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^
13 * bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^
14 * bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^
15 * bytes4(keccak256('approveAndCall(address,uint256)')) ^
16 * bytes4(keccak256('approveAndCall(address,uint256,bytes)'))
17 */
18
19 /**
20 * @dev కాలర్ ఖాతా నుండి `to`కి `value` మొత్తంలో టోకెన్‌లను తరలిస్తుంది
21 * ఆపై `to`పై `ERC1363Receiver::onTransferReceived`ని పిలుస్తుంది.
22 * @param to టోకెన్‌లు బదిలీ చేయబడుతున్న చిరునామా.
23 * @param value బదిలీ చేయవలసిన టోకెన్‌ల మొత్తం.
24 * @return థ్రోయింగ్ చేయకపోతే ఆపరేషన్ విజయవంతమైందని సూచించే బూలియన్ విలువ.
25 */
26 function transferAndCall(address to, uint256 value) external returns (bool);
27
28 /**
29 * @dev కాలర్ ఖాతా నుండి `to`కి `value` మొత్తంలో టోకెన్‌లను తరలిస్తుంది
30 * ఆపై `to`పై `ERC1363Receiver::onTransferReceived`ని పిలుస్తుంది.
31 * @param to టోకెన్‌లు బదిలీ చేయబడుతున్న చిరునామా.
32 * @param value బదిలీ చేయవలసిన టోకెన్‌ల మొత్తం.
33 * @param data నిర్దిష్ట ఫార్మాట్ లేని అదనపు డేటా, `to`కి కాల్‌లో పంపబడుతుంది.
34 * @return థ్రోయింగ్ చేయకపోతే ఆపరేషన్ విజయవంతమైందని సూచించే బూలియన్ విలువ.
35 */
36 function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool);
37
38 /**
39 * @dev అలవెన్స్ మెకానిజం ఉపయోగించి `from` నుండి `to`కి `value` మొత్తంలో టోకెన్‌లను తరలిస్తుంది
40 * ఆపై `to`పై `ERC1363Receiver::onTransferReceived`ని పిలుస్తుంది.
41 * @param from టోకెన్‌లను పంపవలసిన చిరునామా.
42 * @param to టోకెన్‌లు బదిలీ చేయబడుతున్న చిరునామా.
43 * @param value బదిలీ చేయవలసిన టోకెన్‌ల మొత్తం.
44 * @return థ్రోయింగ్ చేయకపోతే ఆపరేషన్ విజయవంతమైందని సూచించే బూలియన్ విలువ.
45 */
46 function transferFromAndCall(address from, address to, uint256 value) external returns (bool);
47
48 /**
49 * @dev అలవెన్స్ మెకానిజం ఉపయోగించి `from` నుండి `to`కి `value` మొత్తంలో టోకెన్‌లను తరలిస్తుంది
50 * ఆపై `to`పై `ERC1363Receiver::onTransferReceived`ని పిలుస్తుంది.
51 * @param from టోకెన్‌లను పంపవలసిన చిరునామా.
52 * @param to టోకెన్‌లు బదిలీ చేయబడుతున్న చిరునామా.
53 * @param value బదిలీ చేయవలసిన టోకెన్‌ల మొత్తం.
54 * @param data నిర్దిష్ట ఫార్మాట్ లేని అదనపు డేటా, `to`కి కాల్‌లో పంపబడుతుంది.
55 * @return థ్రోయింగ్ చేయకపోతే ఆపరేషన్ విజయవంతమైందని సూచించే బూలియన్ విలువ.
56 */
57 function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool);
58
59 /**
60 * @dev కాలర్ యొక్క టోకెన్‌లపై `spender` యొక్క అలవెన్స్‌గా `value` మొత్తంలో టోకెన్‌లను సెట్ చేస్తుంది
61 * ఆపై `spender`పై `ERC1363Spender::onApprovalReceived`ని పిలుస్తుంది.
62 * @param spender నిధులను ఖర్చు చేసే చిరునామా.
63 * @param value ఖర్చు చేయవలసిన టోకెన్‌ల మొత్తం.
64 * @return థ్రోయింగ్ చేయకపోతే ఆపరేషన్ విజయవంతమైందని సూచించే బూలియన్ విలువ.
65 */
66 function approveAndCall(address spender, uint256 value) external returns (bool);
67
68 /**
69 * @dev కాలర్ యొక్క టోకెన్‌లపై `spender` యొక్క అలవెన్స్‌గా `value` మొత్తంలో టోకెన్‌లను సెట్ చేస్తుంది
70 * ఆపై `spender`పై `ERC1363Spender::onApprovalReceived`ని పిలుస్తుంది.
71 * @param spender నిధులను ఖర్చు చేసే చిరునామా.
72 * @param value ఖర్చు చేయవలసిన టోకెన్‌ల మొత్తం.
73 * @param data నిర్దిష్ట ఫార్మాట్ లేని అదనపు డేటా, `spender`కి కాల్‌లో పంపబడుతుంది.
74 * @return థ్రోయింగ్ చేయకపోతే ఆపరేషన్ విజయవంతమైందని సూచించే బూలియన్ విలువ.
75 */
76 function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);
77}
78
79interface ERC20 {
80 event Transfer(address indexed from, address indexed to, uint256 value);
81 event Approval(address indexed owner, address indexed spender, uint256 value);
82 function transfer(address to, uint256 value) external returns (bool);
83 function transferFrom(address from, address to, uint256 value) external returns (bool);
84 function approve(address spender, uint256 value) external returns (bool);
85 function totalSupply() external view returns (uint256);
86 function balanceOf(address account) external view returns (uint256);
87 function allowance(address owner, address spender) external view returns (uint256);
88}
89
90interface ERC165 {
91 function supportsInterface(bytes4 interfaceId) external view returns (bool);
92}
అన్నీ చూపించు

transferAndCall లేదా transferFromAndCall ద్వారా ERC-1363 టోకెన్‌లను అంగీకరించాలనుకునే స్మార్ట్ కాంట్రాక్ట్ తప్పక ERC1363Receiver ఇంటర్‌ఫేస్‌ను అమలు చేయాలి:

1/**
2 * @title ERC1363Receiver
3 * @dev ERC-1363 టోకెన్ కాంట్రాక్ట్‌ల నుండి `transferAndCall` లేదా `transferFromAndCall`కు మద్దతు ఇవ్వాలనుకునే ఏ కాంట్రాక్ట్ కోసం అయినా ఇంటర్‌ఫేస్.
4 */
5interface ERC1363Receiver {
6 /**
7 * @dev `operator` ద్వారా `from` నుండి `ERC1363::transferAndCall` లేదా `ERC1363::transferFromAndCall` ద్వారా ఈ కాంట్రాక్ట్‌కు ERC-1363 టోకెన్‌లు బదిలీ చేయబడినప్పుడల్లా
8 * ఈ ఫంక్షన్ పిలువబడుతుంది.
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}
అన్నీ చూపించు

మరింత సమాచారం

ఈ ఆర్టికల్ ఉపయోగపడిందా?