Для начала нам потребуется следующее:
-Текстовый редактор,
-NET Core SDK 3.1, установленный в вашей системе,
-Узел Эфириума.
Перечислив, что нам нужно для запуска web3 на c# с использованием фреймворка .Net, я хотел бы кратко объяснить важные термины, которые я всегда буду упоминать в этой статье.
DOTNET или .NET:
.NET — это бесплатная кроссплатформенная среда разработки с открытым исходным кодом для создания различных типов приложений с использованием многоязычных редакторов, таких как Visual Basic, библиотеки, c# и f#, для создания приложений для Интернета, мобильных устройств, настольных компьютеров, игр, IoT и т. д. Хотя изначально он был создан для приложений Windows, с поддержкой различных языков программирования, как веб-приложения, так и приложения на основе форм могут быть разработаны с использованием .NET и ASP.NET. Инструмент в рамках .NET Framework, с помощью которого можно создавать серверные части для веб-приложений.
Некоторые функции платформы .NET включают:
-Безопасность,
-Языковая независимость,
-Интероперабельность,
-Портативность,
-Упрощенное развертывание,
-Библиотека базовых классов,
-Общий языковой механизм выполнения (CLR).
C#:
C# — это объектно-ориентированный язык общего назначения, созданный Microsoft. Он работает и размещен на .Net Framework.
Нетериум:
Nethereum — это библиотека интеграции .Net для Ethereum; он упрощает доступ и взаимодействие смарт-контрактов с узлами Ethereum. Он совместим со всеми основными операционными системами и протестирован на мобильных устройствах, настольных компьютерах, в облаке, Xbox, hololens и Windows IoT. Nethereum отлично подходит для разработки Web3.
Некоторые функции Nethereum включают:
-Интеграция Unity3D.
-Поддержка основных методов Ethereum JSON RPC / IPC.
-Имеет библиотеки для стандартных контрактов Token, ENS и Uport.
-Поддержка HD кошелька.
-Простой жизненный цикл аккаунта.
-Имеет ABI для кодирования и декодирования типа .NET.
-Упрощенное взаимодействие со смарт-контрактом.
Теперь, когда я объяснил терминологию выше, я буду использовать пакет Nethereum web3, чтобы получить последний номер блока из блокчейна Ethereum.
Как установить Нетериум:
Чтобы установить Nethereum, в вашей системе должен быть установлен .NET Core или .NET Framework (4.5.1+). Для этой демонстрации мы установим .NET Core SDK, чтобы заставить Nethereum работать. Загрузите и установите пакет SDK для .NET Core версии 3.1 в зависимости от вашей операционной системы. Затем перейдите в терминал/командную строку и введите следующую команду:
$ dotnet новая консоль -o nethereumapp
После выполнения он создаст новое приложение .NET в текущем каталоге. Вы можете дать своему приложению любое имя по вашему выбору. Например, я назову свой nethereum1
Теперь перейдите в ваше приложение:
$ cd nethereum1
Теперь добавьте ссылку на пакет в Nethereum.Web3:
$ dotnet добавить пакет Nethereum.Web3
Вероятно, это может занять некоторое время, однако после добавления ссылки на пакет загрузите/обновите пакет, введя следующую команду:
$ dotnet восстановить
При правильной установке Nethereum будет добавлен на ваш компьютер с пакетом Nethereum web3.
Теперь, когда я установил Nethereum, я перейду к загрузке нашего узла Ethereum
Для начала нам понадобится бесплатная конечная точка QuickNode. Это может быть тестовая сеть, такая как: Rinkeby, Kovan, Ropstepn или Mainnet. После того, как вы создали бесплатную конечную точку ethereum, скопируйте конечную точку HTTP-провайдера. Она понадобится вам позже, поэтому обязательно скопируйте и сохраните ее.
Примечание.Мы можем использовать любой клиент Ethereum, например Geth или OpenEthereum (fka Parity).
Подключение к Ethereum:
Перейдите в папку приложения .NET и откройте файл C# Program.cs в текстовом редакторе.
Отредактируйте код в соответствии со следующим кодом:
Использование системы
Использование System.Threading.Tasks
Использование Nethereum.Web3;
Пространство имен nethereumapp
{
Программа курса
{
Static void Main(string[] args)
{
ПолучитьНомерБлока().Wait();
}
Статическая асинхронная задача GetBlockNumber()
{
Var web3 = new Web3("ADD_YOUR_ETHEREUM_NODE_URL");
Var lastBlockNumber = await web3.Eth.Blocks.GetBlockNumber.SendRequestAsync();
Console.WriteLine($"Номер последнего блока: {latestBlockNumber}");
}
}
}
Обязательно замените `ADD_YOUR_ETHEREUM_NODE_URL` на провайдера http из раздела выше.
Вот фрагмент кода выше:
Строка 1–3: я добавил необходимые пространства имен.
Строка 5: я объявил пространство имен приложения (у которого будет коллекция классов).
Строка 7: я объявил класс с именем Program.
Строка 9–12: я объявил класс Main, который является точкой входа в программу на C# и указывает, что делает класс при выполнении; Объявление, что основной класс должен ждать выполнения класса GetBlockNumber.
Строка 14: я объявил класс задачи GetBlockNumber, классы задач в C# выполняются асинхронно.
Строка 16: я создал экземпляр Web3 и задал URL своего узла.
Строка 17: Используя Eth API, я могу асинхронно выполнить запрос GetBlockNumber и сохранить результат в переменной lastBlockNumber.
Строка 18: Печать номера последнего блока, сохраненного в lastBlockNumber, со строкой «Номер последнего блока:»
Чтобы запустить приложение, откройте терминал/cmd, перейдите в папку вашего приложения .NET и введите следующее:
$ dotnet run
После успешного выполнения кода вы должны увидеть такой вывод:
D:\QuikNode\netherum1›dotnet run
Номер последней блокировки: 11876806
Переслать