Функции ethers
Короче, нашел еще одну строку в коде, которая заставила задуматься. Теперь я иногда буду писать посты о функциях ethers, чтобы мы вместе могли их изучать и запоминать. Так или иначе они могут пригодиться нам в будущем.
Итак, вот эта строка:
const priceFeed = new ethers.Contract(addr, abi, provider)
Provider берется, как раз из функции прошлого поста: new ethers.providers.JsonRpcProvider(), поэтому рассмотрим их обе.
Информация взята и переведена из документации Ethers.
ethers.providers.JsonRpcProvider( [ urlOrConnectionInfo [ , networkish ] ] ) - в скобках указывается url (например, ссылка на узел) и сеть, при необходимости. Если ссылка не указана, то запрос будет отправлен на узел, используя eth_chainId с отсылкой к eth_networkId. По умолчанию используется "http://localhost:8545".
Также с JsonRpcProvider можно использовать ".connection" - для получения информации о провайдере, ".getSigner" - для получения пользователя, который управляет узлом, а если его нет, то вернется нулевой адрес, ".getUncheckedSigner" - для получения хеша транзакции, не дожидаясь дополнительной информации, ".listAccounts" - для получения списка адресов, которыми управляет провайдер, ".send" - для отправки сообщений на узел.
ethers.Contract( address , abi , signerOrProvider ) - подключение к конкретному контракту в сети Ethereum, где "adress" - подключаемый адрес контракта, "abi" - контракт с двоичным интерфейсом приложения, который описывает имеющиеся у него методы и события, "signerOrProvider" - аккаунт, от которого идет подключение, или провайдер (узел).
С ethers.Contract можно использовать ".attach(addressOrName)" - присоединяет новый адрес: это может быть полезно, когда есть несколько похожих копий контракта и вы хотите работать с каждым; ".connect(providerOrSigner)" - подключение аккаунта или узла, от которого будет выполнятся транзакция.
Так же с contract работают такие свойства, как: ".address" - возвращает адрес контракта, ".resolvedAddress" - возвращает промис контракта, к которому идет запрос: если address был указан в конструкторе. ".deployTransaction" - если объект контракта был результатом действия ContractFactory, то свойство покажет транзакцию, которая сделала деплой. ".signer" - вернет аккаунт, который был указан в конструкторе контракта.
Чуть больше прочитать про обе функции можно тут и тут.
#ethers #contract #JsonRpcProvider #provider
Короче, нашел еще одну строку в коде, которая заставила задуматься. Теперь я иногда буду писать посты о функциях ethers, чтобы мы вместе могли их изучать и запоминать. Так или иначе они могут пригодиться нам в будущем.
Итак, вот эта строка:
const priceFeed = new ethers.Contract(addr, abi, provider)
Provider берется, как раз из функции прошлого поста: new ethers.providers.JsonRpcProvider(), поэтому рассмотрим их обе.
Информация взята и переведена из документации Ethers.
ethers.providers.JsonRpcProvider( [ urlOrConnectionInfo [ , networkish ] ] ) - в скобках указывается url (например, ссылка на узел) и сеть, при необходимости. Если ссылка не указана, то запрос будет отправлен на узел, используя eth_chainId с отсылкой к eth_networkId. По умолчанию используется "http://localhost:8545".
Также с JsonRpcProvider можно использовать ".connection" - для получения информации о провайдере, ".getSigner" - для получения пользователя, который управляет узлом, а если его нет, то вернется нулевой адрес, ".getUncheckedSigner" - для получения хеша транзакции, не дожидаясь дополнительной информации, ".listAccounts" - для получения списка адресов, которыми управляет провайдер, ".send" - для отправки сообщений на узел.
ethers.Contract( address , abi , signerOrProvider ) - подключение к конкретному контракту в сети Ethereum, где "adress" - подключаемый адрес контракта, "abi" - контракт с двоичным интерфейсом приложения, который описывает имеющиеся у него методы и события, "signerOrProvider" - аккаунт, от которого идет подключение, или провайдер (узел).
С ethers.Contract можно использовать ".attach(addressOrName)" - присоединяет новый адрес: это может быть полезно, когда есть несколько похожих копий контракта и вы хотите работать с каждым; ".connect(providerOrSigner)" - подключение аккаунта или узла, от которого будет выполнятся транзакция.
Так же с contract работают такие свойства, как: ".address" - возвращает адрес контракта, ".resolvedAddress" - возвращает промис контракта, к которому идет запрос: если address был указан в конструкторе. ".deployTransaction" - если объект контракта был результатом действия ContractFactory, то свойство покажет транзакцию, которая сделала деплой. ".signer" - вернет аккаунт, который был указан в конструкторе контракта.
Чуть больше прочитать про обе функции можно тут и тут.
#ethers #contract #JsonRpcProvider #provider
👍1
Повторение - мать учения
Очень часто в контрактах используются контракты от openzeppelin. Однако мы привыкли просто импортировать их, особо не задумываясь, какие функции и как они реализуют. Предлагаю сегодня, в свободное время, еще раз ка;дому просмотреть их контракты и вспомнить, как они работают.
В подборку я включил контракты, которые встречал в задачах и аудитах. Сохраните себе или сделайте репост, чтобы не потерять.
Контракты ERC20
ERC20
IERC20
SafeERC20
ERC20Pausable
ERC20Burnable
ERC20Permit
ERC20Snapshot
IERC20Metadata
TokenTimelock
Контракты ERC721
ERC721
IERC721
IERC721Metadata
IERC721Receiver
ERC721Burnable
ERC721Enumerable
ERC721Pausable
ERC721Votes
Контракты ERC777
ERC777
IERC777
IERC777Recipient
IERC777Sender
Контракты ERC1155
ERC1155
IERC1155
IERC1155Receiver
ERC1155Burnable
ERC1155Pausable
IERC1155MetadataURI
ERC1155Receiver
Контракты контроля доступа
AccessControl
Ownable
Governor
Pausable
ReentrancyGuard
Прокси контракты
Proxy
BeaconProxy
UpgradeableBeacon
ProxyAdmin - transparent
TransparentUpgradeableProxy
Initializable
UUPSUpgradeable
Библиотеки
Address
Context
Counters
Create2
Strings
ECDSA
SafeMath
Этот пост просто, как напоминалка с быстрым доступом к контрактам. Не нужно искать в гугле или GitHub, кликните тут по ссылке и изучайте.
Советую прочитывать пару контрактов в день для повторения.
#openzeppelin #contract #lib
Очень часто в контрактах используются контракты от openzeppelin. Однако мы привыкли просто импортировать их, особо не задумываясь, какие функции и как они реализуют. Предлагаю сегодня, в свободное время, еще раз ка;дому просмотреть их контракты и вспомнить, как они работают.
В подборку я включил контракты, которые встречал в задачах и аудитах. Сохраните себе или сделайте репост, чтобы не потерять.
Контракты ERC20
ERC20
IERC20
SafeERC20
ERC20Pausable
ERC20Burnable
ERC20Permit
ERC20Snapshot
IERC20Metadata
TokenTimelock
Контракты ERC721
ERC721
IERC721
IERC721Metadata
IERC721Receiver
ERC721Burnable
ERC721Enumerable
ERC721Pausable
ERC721Votes
Контракты ERC777
ERC777
IERC777
IERC777Recipient
IERC777Sender
Контракты ERC1155
ERC1155
IERC1155
IERC1155Receiver
ERC1155Burnable
ERC1155Pausable
IERC1155MetadataURI
ERC1155Receiver
Контракты контроля доступа
AccessControl
Ownable
Governor
Pausable
ReentrancyGuard
Прокси контракты
Proxy
BeaconProxy
UpgradeableBeacon
ProxyAdmin - transparent
TransparentUpgradeableProxy
Initializable
UUPSUpgradeable
Библиотеки
Address
Context
Counters
Create2
Strings
ECDSA
SafeMath
Этот пост просто, как напоминалка с быстрым доступом к контрактам. Не нужно искать в гугле или GitHub, кликните тут по ссылке и изучайте.
Советую прочитывать пару контрактов в день для повторения.
#openzeppelin #contract #lib
GitHub
openzeppelin-contracts/contracts/token/ERC20/ERC20.sol at master · OpenZeppelin/openzeppelin-contracts
OpenZeppelin Contracts is a library for secure smart contract development. - OpenZeppelin/openzeppelin-contracts
👍5