Взаимодействие 1С с блокчейнами TVM (Everscale, TON)

27.12.24

Разработка - Инструментарий разработчика

Решение демонстрирует механизмы взаимодействия с сетями TVM (Telegram Open Network Virtual Machine), такими как Everscale, TON и другими, построенными на базе этой виртуальной машины. Взаимодействие реализовано через клиента командной строки ever-cli. Пример реализации выполнен для сети Everscale, но с небольшими доработками может быть использована для сети TON.

Конфигурация

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Взаимодействие 1С с блокчейнами TVM (Everscale, TON)
.cf 11,38Mb ver:1.1.1
0
0 Скачать (2 SM) Купить за 2 150 руб.

 

Теория о TVM

Всю необходимую информацию о самом блокчейне вы сможете найти на официальном сайте

Отмечу пару деталей. 

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

Все данные в блокчейне хранятся в формате BOC. Это специальная структура хранения данных, которую можно формировать автоматически передавая в клиент структуру данных и интерфейс (ABI)

Для обращения к блокчейну выбран клиент командной строки ever-cli.

Вот этим мы и займемся дальше.

 

 
Реализация клиента на 1С

Объекты конфигурации

Конф-1

В реализации нет ничего сложного, кроме затраченного времени.

Созданы общие модули Блокчейн, БлокчейнВызовСервера и РаботаСКонтрактами, остальные стянуты в БСП для вызова метода ФайловаяСистема.ЗапуститьПрограмму. Которая как раз и вызывает клиент ever-cli с необходимыми параметрами.

Все методы клиента используют универсальный метод запуска клиента Блокчейн.ВыполнитьКоманду

В модуле БлокчейнВызовСервера реализованы обертки большинства команд клиента.

Методы с параметрами реализованы похожим способом

В модуле РаботаСКонтрактами реализованы методы для упрощения кода

Структура справочников следующая

 

В общем то это все что необходимо для работы.

 

 

Как все работает

 

Типы контрактов

 

 

Каждый контракт в сети содержит набор данных. К примеру по Хеш кода контракта можно найти в сети все идентичные контракты. Это могут быть все адреса контрактов кошельков или токенов. Интерфейс позволяет взаимодействовать с контрактом, код заполняется в формате base64, он нужен для определения адреса на который произведется деплой (сохранение в сети) контракта и для самого деплоя.

Многие типовые контракты в сети идентифицированы и их данные вы сможете получить прямо в эксплорере. Вот пример контракта токена. На закладке "Source code" вы сможете найти Интерфейс ABI, а в полях Code и Code Hash соответственно получить код и хеш кода этого контракта. Создаете новый элемент справочника Типы контрактов, заполняете эти поля и готово. Теперь вы сможете создать копию контракта или взаимодействовать с существующим.

 

Аккаунты

 

 

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

 

Контракты

 

 

Каждый элемент справочника - это фактически адрес в сети с указанным Типом контракта. Заполнив эти данные вы сможете выполнять его методы, также как это реализовано в эксплорере на закладке Source code.

К примеру, вы можете получить имя токена.

 

 

Тут нужно отметить три варианта вызова метода контракта.

Выполнить локально: Этот метод скачивает BOC контракта, в котором есть скомпилированный код контракта и его текущие данные. И запускает выполнение метода на локальной машине. Используется для вызова ГЕТ методов, то есть тех, которые не требуют вызов каких то связанных контрактов в сети и не требуют сохранения контрактов в сеть. 

Отправить внешнее сообщение. Метод вызывается в контракте который находится в сети. Параметры кодируются в формат BOC и подписываются ключами Аккаунта. Таких методов мало, их обычно не делают, так как каждый вызов метода в сети списывает с контракта плату за выполнение. 

Отправить внутреннее сообщение. Метод также вызывается в контракте в сети, но есть нюанс. Необходимо указать Кошелек, который является вашим, то есть управляется ключами вашего аккаунта и количество монет (в нано токенах, то есть в 10-9) которые будут отправлены с него на адрес контракта в котором вызывается метод. Поэтому сообщение и называется внутренним, так как идет от кошелька на адрес контракта, а не напрямую.

К примеру, через внутреннее сообщение вы сможете создать новый токен

 

 

Контракт TokenFactory и его данные можете найти в мейн сети.

 

Деплой нового контракта

 

 

Деплой выполняется в два этапа (кодом можно автоматизировать естественно)

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

 

 

В этом примере для контракта с типом "Wallet" есть параметр инициализации "_randomNonce", в которое можно указывать различные случайные значения. В отличие от контракта с типом "Multisig Wallet", в котором нет статических переменных, это позволяет создавать несколько кошельков на один аккаунт.

Нажимаете "Получить адрес". Адрес рассчитывается и заполняется в поле Адрес на форме. Деплой контракта требует наличие на этом адресе монет. Следовательно вам нужно пополнить на нем баланс.

В тестовой сети вы можете запросить монеты у бота EverdevGiver (@everdev_giver_bot). В мейн сети, отправить монеты из своего кошелька. Как вариант это может быть кошелек в расширении браузера Хром Ever Wallet.

После пополнения, можете найти этот адрес в эксплорере и увидеть на нем баланс и статус "State UnInit". То есть монеты пришли, но адрес не инициализирован, так как контракта на нем еще нет.

Теперь можно выполнять Деплой контракта. Если все прошло успешно, вы увидите изменение статуса в эксплорере и уже можете выполнять его методы.

Для удобства на форме есть кнопки:

"Получить инфо" - Получает статус аккаунта в сети, его баланс и другие параметры.

"Получить данные" - Получает данные контракта которые сохранены в его переменных. Состав таких переменных вы можете найти в поле data Интерфейса (ABI) контракта.

Вот в общем то и все по работе с контрактами.

 

Получение данных из сети и другие методы

 

 

В конфигурации есть обработка для демонстрации других полезных методов.

Через нее вы сможете:

  • Отправить монеты с кошелька на другой адрес. Тоже что вы можете выполнять в расширении браузера
  • Получить инфо аккаунта по адресу. Как по кнопке в форме Аккаунты.
  • Декодировать данные Аккаунта по адресу. Как по кнопке в форме Аккаунты.
  • Декодировать Сообщение. Это то сообщение которое отправляется от кошелька на адрес аккаунта
  • Декодировать тело сообщения. Это тело внешнего сообщения.
  • Получить список аккаунтов по хеш кода. К примеру получить все токены которые есть в сети по хеш кода Типа контракта "TokenRootUpgradeable" равный e8801282233f38ad17fead83aeac1820e40598de98675106b0fd91d9524e9141
  • Получить список входящих и исходящих сообщений по адресу аккаунта.
  • Получить список транзакций по адресу аккаунта.
  • На последней закладке можно переключаться между тестовой и мэйн сетью

По умолчанию клиент взаимодействует с тестовой сетью, в обработке можно переключить на мэйн сеть и обратно.

 

Для чего все это нужно?

Идеи можно подчерпнуть в чат ГПТ. На вскидку полезными механизмами могли бы быть:

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

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

Глобальная система программы лояльности, основанная на токенах, тут зависит от воображения и целей.

А еще можно просто познакомиться с работой контрактов из 1С и придумать какие-то новые идеи как это все можно использовать с пользой для себя и для других.

 

Стоимость газа

Одна из причин почему для взаимодействия выбран именно этот блокчейн - дешевые транзакции.

Для примера:

  • Отправка нативных монет с одного кошелька на другой примерно 0,004256031 EVER. По текущему курсу это 0,000085$
  • Создание нового токена примерно 1 EVER. Они хранятся на балансе аккаунта токена. По текущему курсу это 0,02$
  • Отправка токена с одного кошелька на другой примерно 0,076761324 EVER. По текущему курсу это 0,0015$

 

Тестирование

Конфигурация тестировалась на платформе версии: 8.3.25.1374

 

P.S. Решение не претендует на идеальность выполнения и красоту кода. Конфигурация предназначена для демонстрации возможностей интеграции 1С с блокчейном на TVM и не является конечным продуктом.

Конфигурация Блокчейн Everscale TON ever-cli смарт контракт

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

15500 руб.

02.09.2020    174014    974    403    

930

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    15858    113    48    

113

Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

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

22200 руб.

06.10.2023    17793    49    15    

79

Инструментарий разработчика Программист Платформа 1С v8.3 Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9360 руб.

17.05.2024    27958    99    48    

141

Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

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

15000 руб.

10.11.2023    12245    50    33    

68

Нейросети 8.3.6 1С:Управление торговлей 11 Управленческий учет Платные (руб)

Обработка подключения фотокамер Canon и Nikon к Управление торговлей 11.4 для потоковой загрузки фотографий в карточки товаров с автоматическим удалением фона

22800 руб.

24.06.2021    10101    4    4    

15

Инструментарий разработчика Программист 8.3.14 Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

20000 руб.

07.10.2021    18274    7    32    

43
Оставьте свое сообщение