bomb diggity tired – Telegram
bomb diggity tired
2.08K subscribers
55 photos
1 video
10 files
138 links
research web3
Download Telegram
Boom! Нужны ли в будущем аппаратные кошельки? Или они канут в Лету как устройства с ограниченным функционалом, подобно кнопочным телефонам. Кстати о телефонах возможно ли что ваш смартфон - это новая версия холодного кошелька, исключающий фактор утечки закрытого ключа?

И да, благодаря обновлению EIP-7212 Ethereum
(предлагает новый предварительно скомпилированный контракт, выполняющий проверку подписи в эллиптической кривой secp256r1. Эта кривая является одной из наиболее массово адаптированных эллиптических кривых в экосистеме интернета и используется элементами безопасности мобильных устройств, такими как SSL, TLS, DNSSEC.)


Т.е все современные устройства уже могут создавать персональные пары открытых и закрытых ключей (Apple’s Secure Enclave, Android Keystore или Web Authentication) и любая цепочка EVM — в основном накопительные пакеты Ethereum — сможет легко интегрировать этот предварительно скомпилированный контракт.

Устраняя проблему хранения закрытых ключей для пользователя, любой телефон на Android и IOS можно превратить в аппаратный кошелек. Все функции могут быть встроены на один из блоков SOC (System on a Chip)

В целом, все смартфоны используют для обработки SOC, «система на кристалле». Это тип интегральной микросхемы, в которой объединены все основные компоненты компьютерной системы на одном кристалле. Включая в себя процессор, графический процессор (GPU), память, контроллеры периферийных устройств и т.д.

Пользователю больше не нужно запоминать 12 секретных слов или беспокоиться о закрытом ключе. Он может легко использовать Touch ID, Face ID и т. д. для входа в свой кошелек.

В настоящее время приватники и сид-фразы хранятся, где угодно начиная от таблиц эксель на рабочем столе и флешек, заканчивая всевозможными видами шифрования файлов и потерей самого шифра.

Несмотря на хаки, большинство пользователей продолжают использовать горячие кошельки. Теперь, если эти кошельки станут более безопасными и с обновлением абстракции аккаунта, умнее и удобнее для пользователя. Необходимость в холодном кошельке становится все меньше и меньше.

При EIP-7212 независимо от того, сколько у вас кошельков, доступ к ним возможен только с помощью биометрии и эта информация хранится в изолированном процессоре, к которому никто не имеет доступа.

Злоумышленник больше не может получить доступ к закрытому ключу посредством фишинга и единственный способ получить доступ к приватнику - это взломать этот чип, что практически невозможно в 99% случаев. Также возможна функция мультиподписи которая позволяет устанавливать владельцев на нескольких устройствах.

Одна из проблем мультисигов сейчас, заключается в том, какое бы количество владельцев вы ни указали, они сами по себе представляют собой отдельные кошельки, имеющие приватный ключ.

Данный EIP находится в процессе рецензирования. И ни один из нынешних кошельков не использует эти механизмы подписи.

Только после обновления EIP - 7212 Эти методы безопасной подписи могут быть включены в предлагаемый предварительно скомпилированный контракт для инициации транзакций непосредственно с устройств, а также могут использоваться для управления ключами.
4
Solidity Hub – база знаний по Solidity, начните с основ или углубитесь в более сложные особенности языка. Исследуйте дорожную карту и анализируйте раздел с хаками.
🔥3
Гайд по созданию счета в Solidity c функциями deposit, withdraw, balance. Сам контракт развернуть достаточно просто, но связать с HTML не получилось (вернусь к этому позже)

Создать страницу удалось при помощи GPT: Для установки и использования Web3.js необходимо добавить ссылку на библиотеку в вашу веб-страницу. Это можно сделать, добавив следующую строку в раздел <head> вашего HTML-документа.

<noscript src="https://cdn.jsdelivr.net/gh/ethereum/web3.js/dist/web3.min.js"></noscript>

Далее вы можете использовать библиотеку Web3.js для подключения к вашему смарт-контракту Ethereum и предоставления интерфейса для выполнения транзакций. Примерный код может выглядеть следующим образом, если у вас есть смарт-контракт с методами "deposit" и "withdraw" для взаимодействия с балансом:

<!DOCTYPE html>
<html>
<head>
<noscript>Банковский интерфейс</noscript>
<style>
body {
font-family: Arial, sans-serif;
text-align: center;
}
input {
padding: 5px;
margin: 10px;
}
button {
padding: 10px 20px;
}
</style>
<noscript src="https://cdn.jsdelivr.net/gh/ethereum/web3.js/dist/web3.min.js"></noscript>
</head>
<body>
<h1>Банковский интерфейс</h1>
<form>
<label for="amount">Enter your amount here: </label>
<input type="text" id="amount">
<br>
<p>Current balance: <span id="balance">Loading...</span></p>
<button type="button" onclick="deposit()">Deposit</button>
<button type="button" onclick="withdraw()">Withdraw</button>
</form>
<noscript>
// Подключаемся к сети Ethereum
if (typeof web3 !== 'undefined') {
web3 = new Web3(web3.currentProvider);
} else {
web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545")); // Указать URL вашего узла Ethereum
}

// Адрес и ABI вашего смарт-контракта
var contractAddress = 'ADD_YOUR_CONTRACT_ADDRESS_HERE';
var contractABI = [{ "constant": false, "inputs": [{ "name": "amount", "type": "uint256" }], "name": "deposit", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" },{ "constant": false, "inputs": [{ "name": "amount", "type": "uint256" }], "name": "withdraw", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }];

var contract = new web3.eth.Contract(contractABI, contractAddress);

// Получаем текущий баланс
contract.methods.getBalance().call().then(function(result) {
document.getElementById('balance').innerText = result;
});

function deposit() {
var amount = parseInt(document.getElementById('amount').value);
contract.methods.deposit(amount).send({from: 'YOUR_WALLET_ADDRESS', gas: 200000})
.on('receipt', function(receipt){
updateBalance();
console.log(receipt);
});
}

function withdraw() {
var amount = parseInt(document.getElementById('amount').value);
contract.methods.withdraw(amount).send({from: 'YOUR_WALLET_ADDRESS', gas: 200000})
.on('receipt', function(receipt){
updateBalance();
console.log(receipt);
});
}

function updateBalance() {
contract.methods.getBalance().call().then(function(result) {
document.getElementById('balance').innerText = result;
});
}
</noscript>
</body>
</html>

Пожалуйста, обратите внимание, что вам необходимо заменить 'ADDYOURCONTRACTADDRESSHERE' на актуальный адрес вашего смарт-контракта, и 'YOURWALLETADDRESS' - на ваш кошелек. А также использовать корректный ABI для вашего смарт-контракта.

Чат открыт
🔥5
Кураторский список: ресурсов, библиотек, шаблонов, инструментов и многого другого по Solidity

https://github.com/bkrem/awesome-solidity
❤‍🔥3
Преобразование кода Solidity в блок-схемы UML

Для повышения ясности и улучшения отладки кода, каждую часть исходного кода можно представить в виде визуальных диаграмм, таких как блок-схемы, графики и диаграммы UML

Сделать это можно в редакторе Visual Studio Code (установил и настроил по этому видеогайду)

[1] Дальше переходим в раздел расширений.
[2] Находим плагин Solidity Visual Developer и нажимаем кнопку установки.

Solidity Visual Developer - это расширение
способствует эффективной разработке смарт-контрактов.
Обеспечивает ориентированный на безопасность синтаксис, семантическую подсветку, подробное описание классов, UML моделирование, графики вызовов, графики наследования.


[3] Для примера использую следующий код:
https://github.com/Synthetixio/synthetix/blob/develop/contracts/RewardEscrowV2Frozen/BaseRewardEscrowV2Frozen.sol

[4] Открываем палитру команд (Ctrl+Shift+P) - набираем Surya и выбираем функцию. После этого график будет построен автоматически.

Белая стрелка — внешний вызов, зеленая стрелка — внутренний вызов, определенный контракт находится в синем поле, неопределенные контракты показаны квадратом.


Графики вызовов: дают хорошее динамическое представление о функциях в системе и о том, какие из них какие вызывают. Графики наследования используется для предоставления удобной для чтения сводки наследования классов с использованием графа наследования.
🔥2
bomb diggity tired pinned «Solidity 1) Документация по разработке Ethereum 2) Репозиторий [Russian] руководство по Solidity 3) Открытый курс от Ilya Krukowski 4) Введение в Solidity с простыми примерами 5) Crypto Zombies 6) Solidity Hub 7) Кураторский список»
Web3 Инструменты
(Будут пополняться)

Remix — онлайн-компилятор и среда разработки в реальном времени.

Visual Studio Code — редактор исходного кода от Microsoft.

Hardhat — среда разработки Ethereum.

Node.js — кроссплатформенная среда выполнения JavaScript.

Solodit — веб-приложение, для аудиторов.

Callthis — создайте транзакцию, отправьте ссылку, чтобы кто-то другой мог ее выполнить.

Онлайн-конвертер Bytes32 - конвертируйте байты Solidity 32 в строку utf8 или целые числа и наоборот.

Конвертер единиц Ethereum — онлайн-инструмент для конвертации различных номиналов Ethereum (wei, gwei, ether).

Кодировщик ABI — онлайн-кодировщик ABI Solidity для кодирования аргументов смарт-контракта, а также выполнения операций чтения и записи в блокчейне.

Ethereum DevTools by Miguel Mota

Метка времени Unix

Token security detection
👍3
Как стать аудитором смарт-контрактов?
link

Путь по которому я бы пошел, если бы мне пришлось делать это снова. Это будет специфично для ETH (или, в более общем смысле, для EVM), поскольку большая часть аудиторской работы в настоящее время все еще находится в этой экосистеме. (с) Christoph Michel


CMICHEL - Независимый исследователь безопасности, ранее работавший в традиционных аудиторских фирмах. На момент написания статьи занимает первое место в рейтинге аудиторов Code4rena за все время.

Поделился своим процессом аудита, рассказал что нужно сделать, чтобы вас наняли, особенно если вы неизвестны и ответил на часто задаваемые вопросы.
🔥4