ERC-7730 மூலம் உங்கள் நெறிமுறையில் தெளிவான கையொப்பமிடுதலைச் சேர்க்கவும்
பெரும்பாலான முக்கிய எத்திரியம் சுரண்டல்கள் அதே இறுதிப் படியைக் கொண்டிருந்தன: ஒரு பயனர் தங்களால் அர்த்தமுள்ள வகையில் புரிந்துகொள்ள முடியாத ஒரு பரிவர்த்தனைக்கு ஒப்புதல் அளிப்பது. வன்பொருள் பணப்பைகள் மூல ஹெக்ஸ் அழைப்புத் தரவைக் காட்டுகின்றன, மேலும் மோசமான விஷயம் என்னவென்றால், குருட்டுத்தனமாகக் கையொப்பமிடுவதைக் கட்டாயப்படுத்துகின்றன. மென்பொருள் பணப்பைகள் குறியீடு நீக்கப்பட்ட புலங்களைக் காட்டுகின்றன, ஆனால் அவை ஒப்பந்தத்தை அங்கீகரிக்கும் போது மட்டுமே. நெறிமுறை புதியதாக இருப்பதாலோ, செயலி சமரசம் செய்யப்பட்டதாலோ அல்லது சாதனம் ஆஃப்லைனில் இருப்பதாலோ, அவை அங்கீகரிக்காதபோது, பயனர்கள் குருட்டுத்தனமாகக் கையொப்பமிடுகிறார்கள்.
உங்கள் ஒப்பந்தத்தின் செயல்பாட்டு அழைப்புகளின் அர்த்தம் என்ன என்பதை விவரிக்க ERC-7730 (opens in a new tab) ஒரு நிலையான JSON வடிவமைப்பை வரையறுக்கிறது.
ERC-7730 ஐ ஆதரிக்கும் ஒரு பணப்பை உங்கள் விவரிப்பானைப் படித்து இதைக் காட்டுகிறது:
பரிமாற்றம்
அனுப்பு: 1,000 USDC
குறைந்தபட்சம் பெறு: 0.42 WETH
நெறிமுறை: யூனிஸ்வாப் V3
அல்லது மனிதர்கள் மற்றும் முகவர்கள் இருவராலும் படிக்கக்கூடிய வகையில் உருவாக்கப்பட்ட ஒற்றை வாக்கியம்:
குறைந்தபட்சம் 0.42 WETH-க்கு 1,000 USDC-ஐப் பரிமாற்றம் செய்
ஒரு செயல்பாட்டுத் தேர்வி மற்றும் மூல முழு எண் மதிப்புகளின் பட்டியலுக்குப் பதிலாக.
இதுதான் தெளிவான கையொப்பமிடுதல் (opens in a new tab) — "நீங்கள் பார்ப்பதையே கையொப்பமிடுகிறீர்கள்." உங்கள் சொந்த ஒப்பந்தத்திற்கான விவரிப்பானை எழுதுவது, அதிகாரப்பூர்வ CLI கருவி மூலம் அதைச் சரிபார்ப்பது மற்றும் திறந்த பதிவேட்டில் அதைச் சமர்ப்பிப்பது ஆகியவற்றை இந்த வழிகாட்டி உங்களுக்கு விளக்குகிறது.
முன்நிபந்தனைகள்
- Solidity மற்றும் திறன் ஒப்பந்த ABI-கள் பற்றிய பரிச்சயம்
- சரிபார்க்கப்பட்ட ABI உடன் நிலைநிறுத்தப்பட்ட திறன் ஒப்பந்தம் (ஒரு விவரிப்பான் பதிவேட்டில் ஏற்கப்படுவதற்கு முன்பு Sourcify (opens in a new tab) சரிபார்ப்பு தேவை)
- சரிபார்ப்பு CLI-க்கு Python 3.12+
- அடிப்படை JSON அறிவு
ERC-7730 விவரிப்பான் என்றால் என்ன?
விவரிப்பான் என்பது மூன்று பிரிவுகளைக் கொண்ட ஒற்றை JSON கோப்பாகும்:
| பிரிவு | நோக்கம் |
|---|---|
context | சங்கிலி ID மற்றும் முகவரி மூலம் குறிப்பிட்ட ஒப்பந்த நிலைநிறுத்தங்களுடன் விவரிப்பானைப் பிணைக்கிறது |
metadata | திட்டத்திற்குப் பெயரிடுகிறது மற்றும் மீண்டும் பயன்படுத்தக்கூடிய மாறிலிகளை வரையறுக்கிறது |
display | ஒவ்வொரு செயல்பாட்டுக் கையொப்பத்தையும் மனிதர்கள் படிக்கக்கூடிய லேபிள்கள் மற்றும் புல வடிவங்களுடன் வரைபடமாக்குகிறது |
விவரிப்பான் ஒப்பந்தத்திலிருந்து தனித்தனியாக இருப்பதால், மறுநிலைநிறுத்தம் செய்யாமலேயே எந்தவொரு தற்போதைய நெறிமுறைக்கும் தெளிவான கையொப்பமிடுதல் ஆதரவை நீங்கள் சேர்க்கலாம். பணப்பைகள் பதிவேட்டிலிருந்து விவரிப்பான்களை மீட்டெடுத்து, கையொப்பமிடும் நேரத்தில் அவற்றைப் பயன்படுத்துகின்றன.
படி 1: கோப்புச் சட்டகத்தை உருவாக்கவும்
calldata-<contractname>-<descriptorversion>.json என்ற பெயரில் ஒரு கோப்பை உருவாக்கவும். தட்டச்சு செய்யப்பட்ட தரவுச் செய்திகளுக்கான eip712- என்பதற்கு மாறாக, இந்த விவரிப்பான் ஒப்பந்தச் செயல்பாட்டு அழைப்புகளை உள்ளடக்கியது என்பதை calldata- முன்னொட்டு பதிவேட்டிற்குக் கூறுகிறது. descriptorversion என்பது விவரிப்பான் கோப்பின் பதிப்பைப் பதிவேட்டிற்குக் கூறுகிறது, எந்தப் பதிப்பும் வழங்கப்படாவிட்டால் இயல்பாகவே 0 ஆக இருக்கும்.
{
"$schema": "https://eips.ethereum.org/assets/eip-7730/erc7730-v2.schema.json",
"context": {},
"metadata": {},
"display": {
"formats": {}
}
}
படி 2: சூழல் பிரிவை எழுதவும்
context பிரிவு விவரிப்பானை ஒன்று அல்லது அதற்கு மேற்பட்ட ஒப்பந்த நிலைநிறுத்தங்களுடன் பிணைக்கிறது. உள்வரும் பரிவர்த்தனையைச் சரியான விவரிப்பானுடன் பொருத்த பணப்பைகள் இதைப் பயன்படுத்துகின்றன.
"context": {
"$id": "uniswap-v3-router-mainnet",
"contract": {
"deployments": [
{ "chainId": 1, "address": "0xYourContractAddressOnMainnet" },
{ "chainId": 137, "address": "0xYourContractAddressOnPolygon" }
]
}
}
சூழல் புலங்கள்
context.$id— இந்த விவரிப்பான் ஆவணம் அல்லது நிலைநிறுத்த உள்ளமைவிற்கான தனித்துவமான அடையாளங்காட்டி.contract.deployments— இந்த விவரிப்பான் பொருந்தும் நிலைநிறுத்தங்களின் தொகுப்பு.deployments[].chainId— ஒரு நிலைநிறுத்தத்திற்கான EVM சங்கிலி ID. உங்கள் ஒப்பந்தம் நிலைநிறுத்தப்பட்டுள்ள ஒவ்வொரு சங்கிலியையும் சேர்க்கவும்.deployments[].address— பணப்பைகள் இந்த விவரிப்பானுடன் தொடர்புபடுத்த வேண்டிய ஒப்பந்த முகவரி. செயலாக்கத் தர்க்கத்தைக் கொண்டுள்ள செயலாக்க முகவரியைப் பயன்படுத்தவும்.
படி 3: மீத்தரவுப் பிரிவை எழுதவும்
இந்தக் கோப்பால் விவரிக்கப்பட்ட திட்டம் மற்றும் ஒப்பந்தம் பற்றிய மனிதர்கள் படிக்கக்கூடிய தகவலை மீத்தரவுப் பிரிவு வழங்குகிறது. கையொப்பமிடும் போது நெறிமுறைப் பெயர்கள், இணைப்புகள் மற்றும் பிற சூழல் விவரங்களைக் காண்பிக்க பணப்பைகள் இந்தத் தகவலைப் பயன்படுத்தலாம்.
"metadata": {
"owner": "Example Swap Protocol",
"info": { "url": "https://example.xyz" },
"contractName": "SwapRouter"
}
மீத்தரவுப் புலங்கள்
owner— இந்த விவரிப்பானுக்குப் பொறுப்பான திட்டம், நெறிமுறை, நிறுவனம் அல்லது பராமரிப்பாளர்.info.url— கூடுதல் சூழலுக்காகப் பயனர்களுக்குப் பணப்பைகள் காண்பிக்கக்கூடிய அதிகாரப்பூர்வத் திட்டம் அல்லது ஆவண URL.contractName— இந்தக் கோப்பால் விவரிக்கப்பட்ட ஒப்பந்தம் அல்லது செயலாக்கப் பெயர், பொதுவாகச் சரிபார்க்கப்பட்ட மூலக் குறியீடு அல்லது ABI-யுடன் பொருந்தும்.
உங்கள் ERC-7730 கோப்பு ஒரு ERC-20 ஒப்பந்தத்தை விவரித்தால், நீங்கள் ஒரு வில்லைப் பொருளையும் சேர்க்க வேண்டும்.
படி 4: காட்சி வடிவங்கள் பிரிவை எழுதவும்
display.formats பொருள் செயல்பாட்டுக் கையொப்பங்களை மனிதர்கள் படிக்கக்கூடிய கையொப்பமிடும் வழிமுறைகளுடன் வரைபடமாக்குகிறது. பயனர்கள் ஒரு பரிவர்த்தனைக்கு ஒப்புதல் அளிப்பதற்கு முன்பு பணப்பைகள் உங்கள் செயல்பாட்டை அவர்களுக்கு எப்படிக் காட்டுகின்றன என்பது இதுதான்!
ஒவ்வொரு திறவுகோலும் மனிதர்கள் படிக்கக்கூடிய ABI துணுக்காகும் — அளவுருப் பெயர்கள் மற்றும் அளவுரு வகைகள் இரண்டும் உங்கள் ABI-யில் தோன்றுவது போலவே உள்ள செயல்பாட்டுக் கையொப்பம்.
எடுத்துக்காட்டு: ஒரு வில்லைப் பரிமாற்றத்தை விவரித்தல்
"display": {
"formats": {
"swapExactTokensForTokens(uint256 amountIn,uint256 amountOutMin,address[] path,address to,uint256 deadline)": {
"intent": "Swap",
"interpolatedIntent": "Swap {amountIn} for at least {amountOutMin}",
"fields": [
{
"path": "#.amountIn",
"label": "Send",
"format": "tokenAmount",
"params": {
"tokenPath": "#.path[0]"
}
},
{
"path": "#.amountOutMin",
"label": "Receive minimum",
"format": "tokenAmount",
"params": {
"tokenPath": "#.path[1]"
}
},
{
"path": "#.to",
"label": "Recipient",
"format": "addressName",
"params": {
"types": ["eoa", "contract"],
"sources": ["local", "ens"]
}
},
{
"path": "#.deadline",
"label": "Expires",
"format": "date",
"params": {
"encoding": "timestamp"
}
}
]
}
}
}
காட்சிப் புலங்கள்
intent— (தேவை) "பரிமாற்றம்" போன்ற செயலின் சுருக்கமான, பயனர் நட்பு விளக்கம்.interpolatedIntent— (பரிந்துரைக்கப்படுகிறது)"Swap {amountIn} for at least {amountOutMin}"போன்ற வடிவமைக்கப்பட்ட புல மதிப்புகளை உட்பொதிக்கும் ஒரு செழுமையான வாக்கிய வார்ப்புரு. எந்தவொரு காட்சிக் கட்டுப்பாடுகளும் வழங்கப்பட்டால் பணப்பைகள் காண்பிக்கத் தேர்வுசெய்யக்கூடிய இன்னும் பயனர் நட்பு விவரிப்பானை வழங்க, இதைintentஉடன் சேர்க்கவும்.fields— (தேவை) பணப்பைகள் பயனர்களுக்குக் காண்பிக்க வேண்டிய பரிவர்த்தனைப் புலங்களின் வரிசைப்படுத்தப்பட்ட பட்டியல்.-
path— (தேவை) பரிவர்த்தனைத் தரவிற்கான குறிப்பு.#.fieldNameஎன்பது ABI-யில் உள்ள பெயரின் மூலம் குறியீடு நீக்கப்பட்ட அழைப்புத் தரவு அளவுருவைக் குறிக்கிறது.@.valueஎன்பது பரிவர்த்தனையுடன் அனுப்பப்பட்ட ETH மதிப்பைக் குறிக்கிறது. -
label— (தேவை) மதிப்பிற்கு அருகில் காட்டப்படும் மனிதர்கள் படிக்கக்கூடிய லேபிள். -
format— (பரிந்துரைக்கப்படுகிறது) மதிப்பு எவ்வாறு வழங்கப்பட வேண்டும் என்பதைக் கட்டுப்படுத்துகிறது. பொதுவான வடிவங்கள் பின்வருமாறு:tokenAmountaddressNamedate
கூடுதல் வடிவமைப்பு எதுவும் தேவையில்லாதபோது
rawஎன்பதைப் பயன்படுத்தவும். சில வடிவங்கள் கூடுதல்paramsஉள்ளமைவை ஏற்கின்றன. எடுத்துக்காட்டாக:tokenAmountஎந்த வில்லை முகவரி தசமங்கள் மற்றும் டிக்கர் மீத்தரவை வழங்குகிறது என்பதை அடையாளம் காணtokenPathஎன்பதைப் பயன்படுத்தலாம்.dateநேரமுத்திரை எவ்வாறு குறியாக்கம் செய்யப்பட்டுள்ளது என்பதை விவரிக்கencodingஎன்பதைப் பயன்படுத்தலாம்.
தேர்ந்தெடுக்கப்பட்ட வடிவத்திற்கு கூடுதல் தகவல் தேவையில்லை என்றால்,
paramsஎன்பதைத் தவிர்க்கவும்.
-
முழுமையான விவரிப்பான்
{
"$schema": "https://eips.ethereum.org/assets/eip-7730/erc7730-v2.schema.json",
"context": {
"$id": "uniswap-v3-router-mainnet",
"contract": {
"deployments": [
{
"chainId": 1,
"address": "0xYourContractAddressOnMainnet"
},
{
"chainId": 137,
"address": "0xYourContractAddressOnPolygon"
}
]
}
},
"metadata": {
"owner": "Example Swap Protocol",
"info": {
"url": "https://example.xyz"
},
"contractName": "SwapRouter"
},
"display": {
"formats": {
"swapExactTokensForTokens(uint256 amountIn,uint256 amountOutMin,address[] path,address to,uint256 deadline)": {
"intent": "Swap",
"interpolatedIntent": "Swap {amountIn} for at least {amountOutMin}",
"fields": [
{
"path": "#.amountIn",
"label": "Send",
"format": "tokenAmount",
"params": {
"tokenPath": "#.path[0]"
}
},
{
"path": "#.amountOutMin",
"label": "Receive minimum",
"format": "tokenAmount",
"params": {
"tokenPath": "#.path[1]"
}
},
{
"path": "#.to",
"label": "Recipient",
"format": "addressName",
"params": {
"types": ["eoa", "contract"],
"sources": ["local", "ens"]
}
},
{
"path": "#.deadline",
"label": "Expires",
"format": "date",
"params": {
"encoding": "timestamp"
}
}
]
}
}
}
}
படி 5: பதிவேட்டில் சமர்ப்பிக்கவும்
ERC-7730 பதிவேடு (opens in a new tab) என்பது ஒரு நடுநிலை நிர்வாகியாக எத்தீரியம் அறக்கட்டளை வழங்கும் ஒரு திறந்த களஞ்சியமாகும். யார் வேண்டுமானாலும் இதை நகலெடுத்துச் சுய-வழங்கலாம் — பணப்பைகள் தாங்கள் நம்பும் பதிவேட்டு நிகழ்வுகளைச் சுயாதீனமாக முடிவு செய்கின்றன.
- GitHub-இல் களஞ்சியத்தைக் கவை (fork) செய்யவும்
registry/<your-project-name>/என்பதில் ஒரு கோப்புறையை உருவாக்கவும்- உங்கள் கோப்பை அதற்குள் வைக்கவும்:
registry/myproject/calldata-mycontract-0_0.json - களஞ்சியத்திற்குள் பயன்படுத்தப்படும் தொடர்புடைய பாதைக்கு
$schemaபுலத்தைப் புதுப்பிக்கவும்:"../../specs/erc7730-v2.schema.json" - ஒரு இழுப்பு கோரிக்கையை (pull request) திறக்கவும்
நீங்கள் PR-ஐத் திறக்கும்போது, CI தானாகவே திட்டச் சரிபார்ப்பை இயக்குகிறது, செயல்பாட்டுக் கையொப்பங்கள் செல்லுபடியாகும் தேர்வுகளை உருவாக்குகின்றனவா என்பதைச் சரிபார்க்கிறது, ஒப்பந்த முகவரி Sourcify-இல் சரிபார்க்கப்பட்டதை உறுதிப்படுத்துகிறது மற்றும் ABI முரண்பாடுகளைக் கொடியிடுகிறது. சரிபார்ப்பு முடிவுகள் PR-இல் உள்ளமைவாகத் தோன்றும். பதிவேட்டுப் பராமரிப்பாளர்கள் தவறான அல்லது தீங்கிழைக்கக்கூடிய விவரிப்பான்களுக்கான சமர்ப்பிப்புகளைத் திரையிடுகிறார்கள். பதிவேட்டில் சேர்ப்பது தணிக்கை அல்லது ஒப்புதலைக் குறிக்காது.
ஒன்றிணைத்த பிறகு என்ன நடக்கும்?
பதிவேட்டில் உள்ள அனைத்து விவரிப்பான்களும் தணிக்கையாளர்களுக்குத் திறந்திருக்கும். உங்கள் PR ஒன்றிணைக்கப்பட்ட பிறகு, எந்தவொரு தணிக்கையாளரும் உங்கள் விவரிப்பானை மதிப்பாய்வு செய்து, அதன் துல்லியத்தை உறுதிப்படுத்தும் ஒரு கிரிப்டோகிராஃபிக் சான்றளிப்பை (ERC-8176 (opens in a new tab) இன் கீழ்) வெளியிடலாம்.
இந்தச் சான்றளிப்பு சமிக்ஞைகள் பணப்பைகள் தங்களின் சொந்த நம்பிக்கைக் கொள்கைகளைப் பயன்படுத்த அனுமதிக்கின்றன — பல சுயாதீனச் சான்றளிப்புகளைக் கொண்ட ஒரு விவரிப்பான், சான்றளிப்பு இல்லாததை விட அதிக மதிப்பைக் கொண்டுள்ளது. clearsigning.org (opens in a new tab) மூலம் நீங்கள் தணிக்கையாளர் சமூகத்தை அணுகலாம்.
பணப்பைகள் எந்தப் பதிவேட்டை ஆதரிக்கும் என்பதைத் தேர்வு செய்கின்றன. உங்கள் விவரிப்பான் பதிவேட்டில் வந்தவுடன், ERC-7730 ஐ ஆதரிக்கும் பணப்பைகள் அது அவற்றின் பதிவேட்டில் இருந்தால் அதைப் பெறத் தொடங்கும், மேலும் பயனர்கள் உங்கள் ஒப்பந்தத்துடன் தொடர்பு கொள்ளும்போது மனிதர்கள் படிக்கக்கூடிய தரவைக் காண்பிக்கும்.
மேலும் படிக்க
- ERC-7730 விவரக்குறிப்பு (opens in a new tab)
- ERC-7730 பதிவேடு (opens in a new tab)
- clearsigning.org (opens in a new tab) — கருவிகள், சுற்றுச்சூழல் நிலை மற்றும் ஆளுகை
- Sourcify ஒப்பந்தச் சரிபார்ப்பு (opens in a new tab)
- டிரில்லியன் டாலர் பாதுகாப்பு முயற்சி (opens in a new tab)
பக்கம் கடைசியாகப் புதுப்பிக்கப்பட்டது: 12 மே, 2026