پروژه دفترچه آدرس(Address book) در قرارداد هوشمند Solidity
یک دفترچه آدرس(Address book) در کد زیر در قرارداد هوشمند Solidity آمده است. دفترچه آدرس این امکان را به فرد می دهد تا لیستی از آدرس های حساب اتریوم را با نام مستعار در بلاک چین ذخیره کند. به عنوان یک نکته، هرگز داده های حساس یا خصوصی را در بلاک چین عمومی ذخیره نکنید. داده های ذخیره شده در بلاک چین عمومی هستند که می توان آن ها را با استفاده از ابزارهای مختلف (مانند Web3) خواند.
قرارداد دفترچه آدرس بسیار پیشرفته است زیرا از موارد زیر استفاده می کند:
- Mapping
- آرایه ها
- حلقه
برای یادگیری اصول اولیه Mappngها، آرایه ها و حلقه ها، قرارداد زیر را آزمایش کنید. سعی کنید کد قرارداد هوشمند را گسترش دهید. با استفاده از Remix آن را در شبکه آزمایشی دپلوی کنید. فراموش نکنید:
- ذخیره یک متغیر حالت در بلاک چین از گس استفاده می کند.
- مشاهده متغیرهای حالت از بلاک چین از گس استفاده نمی کند.
pragma solidity 0.5.10;
contract AddressBook {
//maps an address to an address array
//As an example your address to a list of addresses you are interested in. This supports multiple people having an address book
mapping(address => address[]) private _addresses;
//maps an address to another map of address to a string
//example - your address mapped to a mapping of your address book to its alias
mapping(address => mapping(address => string)) private _aliases;
//returns the list of addresses in the _addresses map
function getAddressArray(address addr) public returns (address[] memory) {
return _addresses[addr];
}
//adds address to your list of addresses in the _addresses map.
//Uses push since it is an array
//adds your address, address and alias to the _aliases map
function addAddress(address addr, string memory alia) public {
_addresses[msg.sender].push(addr);
_aliases[msg.sender][addr] = alia;
}
function removeAddress(address addr) public {
// get the length of the addresses in the array from the msg sender
uint length = _addresses[msg.sender].length;
for(uint i = 0; i < length; i++) {
// if the address that you want to remove = one of the addresses you own
//and is one of the iterations of the loop
if (addr == _addresses[msg.sender][i]) {
//once we find the item in the array we need to delete the item
//then shift each item down 1. You can't just delete an item in the middle of an array
//make sure the length of the address is not < 1 (this is needed because we are going to reorder the array)
if(1 < _addresses[msg.sender].length && i < length-1) {
//shift the last item in the array to the position of the item that we are removing
_addresses[msg.sender][i] = _addresses[msg.sender][length-1];
}
// delete the item we just swapped from
delete _addresses[msg.sender][length-1];
//then decrement the length of the array by 1
_addresses[msg.sender].length--;
//delete the alias for it
delete _aliases[msg.sender][addr];
//_state[msg.sender]++;
break;
}
}
}
//Gets the alias for your address
function getAlias(address addrowner, address addr) public returns (string memory) {
return _aliases[addrowner][addr];
}
}
در صورتی که تجربه خاصی در خصوص برنامهنویسی ندارید میتوانید از دورههای رایگان سایت ما “فرازمان“، استفاده کنید. همچنین اگر به دورههای پیشرفتهتری در این خصوص نیاز داشته باشید، ما با آموزش های حرفه ای که در سایتمان قرار دادیم می توانید به سطح دلخواهتان با تلاش و پشتکار برسید.
نقشه راه
راهنما آکادمی فرازمان
برای یادگیری برنامه نویسی بلاکچین…
در این باره بیشتر بخوانید
دیدگاهتان را بنویسید