முக்கிய உள்ளடக்கத்திற்குச் செல்லவும்
Change page

ஸ்மார்ட் ஒப்பந்தங்கள் அறிமுகம்

பக்கம் கடைசியாகப் புதுப்பிக்கப்பட்டது: 25 பிப்ரவரி, 2026

ஸ்மார்ட் ஒப்பந்தம் என்றால் என்ன?

"ஸ்மார்ட் ஒப்பந்தம்" (smart contract) என்பது Ethereum பிளாக்செயினில் இயங்கும் ஒரு நிரலாகும் (program). இது Ethereum பிளாக்செயினில் ஒரு குறிப்பிட்ட முகவரியில் இருக்கும் குறியீடு (அதன் செயல்பாடுகள்) மற்றும் தரவுகளின் (அதன் நிலை) தொகுப்பாகும்.

ஸ்மார்ட் ஒப்பந்தங்கள் ஒரு வகையான Ethereum கணக்கு ஆகும். அதாவது அவை ஒரு இருப்பைக் (balance) கொண்டுள்ளன மற்றும் பரிவர்த்தனைகளின் இலக்காக இருக்க முடியும். இருப்பினும் அவை ஒரு பயனரால் கட்டுப்படுத்தப்படுவதில்லை, மாறாக அவை நெட்வொர்க்கில் நிறுவப்பட்டு (deployed) நிரல்படுத்தப்பட்டபடி இயங்குகின்றன. பயனர் கணக்குகள் ஸ்மார்ட் ஒப்பந்தத்தில் வரையறுக்கப்பட்ட ஒரு செயல்பாட்டை இயக்கும் பரிவர்த்தனைகளைச் சமர்ப்பிப்பதன் மூலம் ஸ்மார்ட் ஒப்பந்தத்துடன் தொடர்பு கொள்ளலாம். ஸ்மார்ட் ஒப்பந்தங்கள், ஒரு வழக்கமான ஒப்பந்தத்தைப் போலவே விதிகளை வரையறுக்கலாம், மேலும் குறியீட்டின் மூலம் அவற்றை தானாகவே செயல்படுத்தலாம். ஸ்மார்ட் ஒப்பந்தங்களை இயல்பாக நீக்க முடியாது, மேலும் அவற்றுடனான தொடர்புகள் மாற்ற முடியாதவை (irreversible).

முன்நிபந்தனைகள்

நீங்கள் இப்போதுதான் தொடங்குகிறீர்கள் அல்லது குறைந்த தொழில்நுட்ப அறிமுகத்தைத் தேடுகிறீர்கள் என்றால், எங்களின் ஸ்மார்ட் ஒப்பந்தங்கள் அறிமுகத்தை பரிந்துரைக்கிறோம்.

ஸ்மார்ட் ஒப்பந்தங்களின் உலகிற்குள் நுழைவதற்கு முன், கணக்குகள், பரிவர்த்தனைகள் மற்றும் Ethereum மெய்நிகர் இயந்திரம் (EVM) பற்றிப் படித்திருப்பதை உறுதிப்படுத்திக் கொள்ளுங்கள்.

ஒரு டிஜிட்டல் விற்பனை இயந்திரம்

Nick Szabo (opens in a new tab) விவரித்தபடி, ஸ்மார்ட் ஒப்பந்தத்திற்கான சிறந்த உருவகம் ஒரு விற்பனை இயந்திரம் (vending machine) ஆகும். சரியான உள்ளீடுகளுடன் (inputs), ஒரு குறிப்பிட்ட வெளியீடு (output) உத்தரவாதம் அளிக்கப்படுகிறது.

விற்பனை இயந்திரத்திலிருந்து ஒரு சிற்றுண்டியைப் பெற:

1money + snack selection = snack dispensed

இந்த தர்க்கம் (logic) விற்பனை இயந்திரத்தில் நிரல்படுத்தப்பட்டுள்ளது.

ஒரு விற்பனை இயந்திரத்தைப் போலவே, ஸ்மார்ட் ஒப்பந்தத்திலும் தர்க்கம் நிரல்படுத்தப்பட்டுள்ளது. இந்த விற்பனை இயந்திரம் Solidity-யில் எழுதப்பட்ட ஸ்மார்ட் ஒப்பந்தமாக இருந்தால் எப்படி இருக்கும் என்பதற்கான எளிய உதாரணம் இங்கே:

1pragma solidity 0.8.7;
2
3contract VendingMachine {
4
5 // ஒப்பந்தத்தின் நிலை மாறிகளை அறிவிக்கவும்
6 address public owner;
7 mapping (address => uint) public cupcakeBalances;
8
9 // 'VendingMachine' ஒப்பந்தம் நிலைநிறுத்தப்படும் போது:
10 // 1. நிலைநிறுத்தும் முகவரியை ஒப்பந்தத்தின் உரிமையாளராக அமைக்கவும்
11 // 2. நிலைநிறுத்தப்பட்ட ஸ்மார்ட் ஒப்பந்தத்தின் கப்கேக் இருப்பை 100 ஆக அமைக்கவும்
12 constructor() {
13 owner = msg.sender;
14 cupcakeBalances[address(this)] = 100;
15 }
16
17 // ஸ்மார்ட் ஒப்பந்தத்தின் கப்கேக் இருப்பை அதிகரிக்க உரிமையாளரை அனுமதிக்கவும்
18 function refill(uint amount) public {
19 require(msg.sender == owner, "Only the owner can refill.");
20 cupcakeBalances[address(this)] += amount;
21 }
22
23 // கப்கேக்குகளை வாங்க எவரையும் அனுமதிக்கவும்
24 function purchase(uint amount) public payable {
25 require(msg.value >= amount * 1 ether, "You must pay at least 1 ETH per cupcake");
26 require(cupcakeBalances[address(this)] >= amount, "Not enough cupcakes in stock to complete this purchase");
27 cupcakeBalances[address(this)] -= amount;
28 cupcakeBalances[msg.sender] += amount;
29 }
30}
அனைத்தையும் காட்டு

ஒரு விற்பனை இயந்திரம் விற்பனையாளரின் தேவையை எவ்வாறு நீக்குகிறதோ, அதேபோல ஸ்மார்ட் ஒப்பந்தங்கள் பல தொழில்களில் இடைத்தரகர்களை (intermediaries) மாற்ற முடியும்.

அனுமதியற்றது

யார் வேண்டுமானாலும் ஸ்மார்ட் ஒப்பந்தத்தை எழுதி நெட்வொர்க்கில் நிறுவலாம். நீங்கள் ஒரு ஸ்மார்ட் ஒப்பந்த மொழியில் குறியீடு எழுதக் கற்றுக்கொள்ள வேண்டும், மேலும் உங்கள் ஒப்பந்தத்தை நிறுவ போதுமான ETH வைத்திருக்க வேண்டும். ஸ்மார்ட் ஒப்பந்தத்தை நிறுவுவது தொழில்நுட்ப ரீதியாக ஒரு பரிவர்த்தனையாகும், எனவே ஒரு எளிய ETH பரிமாற்றத்திற்கு நீங்கள் எவ்வாறு கேஸ் (gas) செலுத்துகிறீர்களோ அதே வழியில் கேஸ் செலுத்த வேண்டும். இருப்பினும், ஒப்பந்தத்தை நிறுவுவதற்கான கேஸ் செலவுகள் மிக அதிகம்.

ஸ்மார்ட் ஒப்பந்தங்களை எழுதுவதற்கு டெவலப்பர்களுக்கு ஏற்ற மொழிகளை Ethereum கொண்டுள்ளது:

  • Solidity
  • Vyper

மொழிகள் பற்றி மேலும் அறிய

இருப்பினும், Ethereum-இன் மெய்நிகர் இயந்திரம் ஒப்பந்தத்தைப் புரிந்துகொண்டு சேமிக்க ஏதுவாக, அவற்றை நிறுவுவதற்கு முன்பு தொகுக்கப்பட (compiled) வேண்டும். தொகுத்தல் பற்றி மேலும் அறிய

ஒருங்கிணைப்புத் திறன்

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

ஸ்மார்ட் ஒப்பந்த ஒருங்கிணைப்புத் திறன் பற்றி மேலும் அறிக.

வரம்புகள்

ஸ்மார்ட் ஒப்பந்தங்களால் ஆஃப்செயின் (offchain) மூலங்களிலிருந்து தரவை மீட்டெடுக்க முடியாததால், "நிஜ உலக" நிகழ்வுகள் பற்றிய தகவல்களை அவற்றால் மட்டும் பெற முடியாது. அதாவது நிஜ உலகில் நடக்கும் நிகழ்வுகளுக்கு அவற்றால் பதிலளிக்க முடியாது. இது வடிவமைப்பிலேயே உள்ளது. வெளிப்புறத் தகவல்களை நம்பியிருப்பது கருத்தொற்றுமையை (consensus) பாதிக்கலாம், இது பாதுகாப்பு மற்றும் பரவலாக்கத்திற்கு (decentralization) முக்கியமானது.

இருப்பினும், பிளாக்செயின் பயன்பாடுகள் ஆஃப்செயின் தரவைப் பயன்படுத்த முடிவது முக்கியம். இதற்கான தீர்வு ஆரக்கிள்கள் (oracles) ஆகும், இவை ஆஃப்செயின் தரவை உள்வாங்கி ஸ்மார்ட் ஒப்பந்தங்களுக்குக் கிடைக்கச் செய்யும் கருவிகளாகும்.

ஸ்மார்ட் ஒப்பந்தங்களின் மற்றொரு வரம்பு அதிகபட்ச ஒப்பந்த அளவு ஆகும். ஒரு ஸ்மார்ட் ஒப்பந்தம் அதிகபட்சமாக 24KB இருக்கலாம் அல்லது அது கேஸ் தீர்ந்துவிடும். தி டயமண்ட் பேட்டர்ன் (The Diamond Pattern) (opens in a new tab) என்பதைப் பயன்படுத்துவதன் மூலம் இதைத் தவிர்க்கலாம்.

மல்டிசிக் ஒப்பந்தங்கள்

மல்டிசிக் (பல-கையொப்பம்) ஒப்பந்தங்கள் என்பவை ஒரு பரிவர்த்தனையைச் செயல்படுத்த பல செல்லுபடியாகும் கையொப்பங்கள் தேவைப்படும் ஸ்மார்ட் ஒப்பந்தக் கணக்குகளாகும். கணிசமான அளவு ஈதர் அல்லது பிற டோக்கன்களை வைத்திருக்கும் ஒப்பந்தங்களுக்கு ஒற்றை புள்ளி தோல்விகளைத் (single points of failure) தவிர்க்க இது மிகவும் பயனுள்ளதாக இருக்கும். மல்டிசிக்குகள் ஒப்பந்தச் செயலாக்கம் மற்றும் விசை மேலாண்மைக்கான பொறுப்பை பல தரப்பினரிடையே பிரிக்கின்றன, மேலும் ஒரு தனிப்பட்ட விசையை (private key) இழப்பதால் ஏற்படும் மாற்ற முடியாத நிதி இழப்பைத் தடுக்கின்றன. இந்தக் காரணங்களுக்காக, எளிய DAO நிர்வாகத்திற்கு மல்டிசிக் ஒப்பந்தங்களைப் பயன்படுத்தலாம். மல்டிசிக்குகளைச் செயல்படுத்த M சாத்தியமான ஏற்றுக்கொள்ளக்கூடிய கையொப்பங்களில் N கையொப்பங்கள் தேவை (இங்கு N ≤ M, மற்றும் M > 1). N = 3, M = 5 மற்றும் N = 4, M = 7 ஆகியவை பொதுவாகப் பயன்படுத்தப்படுகின்றன. 4/7 மல்டிசிக்கிற்கு சாத்தியமான ஏழு செல்லுபடியாகும் கையொப்பங்களில் நான்கு தேவை. அதாவது மூன்று கையொப்பங்கள் தொலைந்து போனாலும் நிதியை மீட்டெடுக்க முடியும். இந்த நிலையில், ஒப்பந்தம் செயல்பட பெரும்பான்மையான விசை வைத்திருப்பவர்கள் (key-holders) ஒப்புக்கொண்டு கையொப்பமிட வேண்டும் என்பதையும் இது குறிக்கிறது.

ஸ்மார்ட் ஒப்பந்த ஆதாரங்கள்

OpenZeppelin Contracts - பாதுகாப்பான ஸ்மார்ட் ஒப்பந்த மேம்பாட்டிற்கான நூலகம்.

மேலும் படிக்க

பயிற்சிகள்: Ethereum-இல் ஸ்மார்ட் ஒப்பந்த கையொப்பங்கள் (EIP-1271)

இந்தக் கட்டுரை பயனுள்ளதாக இருந்ததா?