GalaxyOnline Partnership Proposal

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

Галактика - это рабочий инструмент, который легко знакомит с блокчейнами, криптовалютами и ГЛАВНОЕ даёт возможность их использовать, а не просто купить/продать/держать/бояться…

2 Likes

ENGLISH
Based on the results of the feedback received and active consultations with the validator owners, we concluded that our proposal was unrealistic in its current form and completely revised it.
There are many reasons: too large a stack, costs for servers, raising and maintaining nodes (and it would take not 1 node, but at least 2), switching to Rust, etc.
The new version of the partnership proposal will be published shortly.

RUSSIAN
По результатам полученного фидбека и активных консультаций с владельцами валидаторов, мы сделали вывод о нереальности нашего предложения в текущем виде и полностью его переработали.
Причин много: слишком большой стэйк, затраты на сервера, поднятия и обслуживания нод (причем потребовалась бы не 1 нода а минимум 2), переход на раст и т. д.
Новая редакция предложения о партнерстве будет опубликована в ближайшее время.

1 Like

Galaxy Online partnership proposal to Free TON v3.4

Summary

In accordance with Stage 4. of the previously adopted document on partnership GalaxyOnline Partnership Proposal - #76 by GalaxyOnline.io and based on the implementation of the first 3 stages, supported by the Report in Russian GalaxyOnline Partnership Proposal - #115 by GalaxyOnline.io and an English report GalaxyOnline Partnership Proposal - #116 by GalaxyOnline.io, as well as an audit from Analytics & Support Subguvernance GalaxyOnline Partnership Proposal - #125 by lvv. We ask the Free TON community to consider and vote for the adoption of the new, current partnership document.

Stage How many TONs When For what
1 80K Up front Technical development and implementation of technologies according to KPI, marketing and advertising
2 Funds are allocated as Lock Stake in the amount of 500K through DeBots for a period of 6 months. Up front Rewards to players for participating in quests, Arenas and Tournaments. The Freetonium liquidity pool for Free TON players.
3 New proposal When Stages 1-2 compleate To continue determined by a vote

GalaxyOnline.io review - what are the advantages of the project?

The uniqueness of the Galaxy Online game is based in a single game universe, consisting of galaxies of game races, where each race belongs to the community of a separate blockchain.

Players can play as one of the races with reference to a specific blockchain and its technologies.

img

The war between races for domination over the universe and the rich territories of space is a direct competition between the communities of different blockchains and the battle of the technologies of different blockchains.

KPI (initial commitment)

Motivation & Goals

Attracting new and retaining existing Free TON users through Galaxy Online game processes, using TRUE NFT and teaching players the technologies and benefits of Free TON.

Why does Galaxy Online need Lock Stake rewards?

Our project moves towards decentralization and the ideal option for supporting the players of their race from Free Ton will be through the creation of a liquidity pool to Freetonium with the help of rewards, from the delegated Lock Stake, but not directly through tranches. At the same time, the fact of supporting the players of the race Free Ton is more important than the size of such support. This type of support is able to create an avalanche effect, the increase, involvement and retention of new users through the game race Free Ton.

Players of the Free TON race can mining Freetonium simply by playing and exchange it for TON Crystal from the rewards. The requested Lock Stake of 500K TON Crystal will support Free TON players at 2k TON Crystal per month and only 12k TON Crystal for all 6 months.

Cooperation overview

  1. Galaxy Online wants to use Free TON to bring to market a new DeFi game product using smart contracts and TRUE NFT and their application in the game.

  2. We plan to create our own trading platform for True NFT, as well as for NFT other partners.

  3. We want to create close integration with Free Ton Academy Subguvernance to provide players training materials on the benefits of Free TON blockchain technology and their application in the form of game tasks directly in the game interface (as part of the game content), for the execution of which players will receive awards in gaming values and Ton Crystals.

Example . One of the tasks for players consists of a 10-question test and is called “How is True NFT differs from NFT?”. Below, are links to tutorials. If all the answers are correct, the player will receive a pre-agreed prize, for example, 100k Energy and 2 TON Crystals.

Collaboration Benefits to Free TON

  1. The best option for engaging and retaining users in the Free TON community through a game shell with support for Freetonium mining, provided by the liquidity of the rewards.

  2. Effective and unobtrusive training of players in blockchain technologies and the benefits of Free TON through their usual game tasks with the encouragement of game values and TON Crystals.

  3. Introducing users to Free TON products through the game interface.

  4. A new marketplace in the Free TON ecosystem that allows the issuance and trading of TRUE NFTs and is closely tied to the game project using its own TRUE NFTs.

  5. The best way to support the partner project before its self-sufficiency projected in January 2022.

Implementation process

Integration of Free TON blockchain technologies into the gaming industry through the MMO game Galaxy Online and ecosystem satellite projects:

  1. Creation of smart contracts TRUE NFT and their real application in the game.

  2. Creation of a marketplace with support for TRUE NFT-tokens based on Free TON smart contracts

  3. Upgrade the marketplace with the ability for any user to create their own TRUE NFTs based on Free TON smart contracts in a simple, convenient constructor and the possibility of their subsequent listing on the marketplace.

Promotion of Free TON blockchain technologies through the gaming audience by:

  1. Popularization of TRUE NFT based on Free TON smart contracts

  2. Popularization of Free TON itself through the Galaxy Online game and parts of its ecosystem:
    • The game itself, game quests, arenas and tournaments
    • Other mini-games: Space battle (analogue of sea combat), Duel, and in the future, other games
    • Mini-games of partners, which are planned to be embedded inside the Galaxy Online game. For example, PokerTON
    • Issuing own TRUE NFT tokens and trading them on the marketplace
    • Arenas and Tournaments

  3. Introducing new players who are not familiar with blockchain technologies and players who initially come into the game from other blockchains with the Free TON blockchain, its technologies and capabilities.

Token allocation

- Stage 1. The initial token request: 80,000 TON Crystal:

  • Tokens use: Technical development and implementation of technologies according to KPI, marketing and advertising.
  • Developers : The integration will be carried out by the Galaxy Online team.
  • Reporting: Regular publication of progress reports for the Free TON community.

- Stage 2. The Lock Stake request: 500,000 TON Crystal through DeBots for a period of 6 months:

  • Lock stake use: 500,000 TON Crystal
  • Distribution Rewards from Lock Stake : Rewards to players for participating in quests, Arenas and Tournaments. The Freetonium liquidity pool for Free TON players.
  • Reporting: Passing the audit through Analytics & Support Sub-governance at the end of Stage 2.

- Stage 3. At the end of Stage 2 and reporting to the Free TON community, based on the effect of the work done, will be formulated new proposal for additional TON Crystal tokens.

Wallet address (for the initial token request and for rewards from a locked stake through DeBots )

0:b91311d5a2cea90f999492a62441965d8fa58df3a9644149ccef495c54a24614

2 Likes

Отличное предложение! Игра стремительно развивается и реклама Тон Кристала на постоянной основе в игре привлечет еще многие тысячи пользователей.

1 Like

Of all the projects to which FreeTON allocates funds, Galaxy Online seems to be one of the most promising not only in terms of popularizing FreeTON to the masses, but also as an element of acquainting people with the unique technologies of the blockchain itself. Moreover, during the last 3 stages, all obligations were fulfilled and on the anniversary of FreeTON in the Galaxy they held a unique event in support of the project, which also says a lot.

2 Likes

Galaxy Online partnership proposal to Free TON v3.5

Summary

In accordance with Stage 4. of the previously adopted document on partnership GalaxyOnline Partnership Proposal - #76 by GalaxyOnline.io and based on the implementation of the first 3 stages, supported by the Report in Russian GalaxyOnline Partnership Proposal - #115 by GalaxyOnline.io and an English report GalaxyOnline Partnership Proposal - #116 by GalaxyOnline.io, as well as an audit from Analytics & Support Subguvernance GalaxyOnline Partnership Proposal - #125 by lvv. We ask the Free TON community to consider and vote for the adoption of the new, current partnership document.

Stage How many TONs When For what
1 Payouts and vesting: 10K every month for a period of 6 months. Up front Technical development and implementation of Free TON technologies according to KPI
2 Funds are allocated as Lock Stake in the amount of 1,000K through Depools for a period of 6 months. Up front Rewards to players for participating in quests, Arenas and Tournaments. The Freetonium liquidity pool for Free TON players.
3 New proposal When Stages 1-2 complete To continue determined by a vote

GalaxyOnline.io review - what are the advantages of the project?

The uniqueness of the Galaxy Online game is based in a single game universe, consisting of galaxies of game races, where each race belongs to the community of a separate blockchain.

Players can play as one of the races with reference to a specific blockchain and its technologies.

img

The war between races for domination over the universe and the rich territories of space is a direct competition between the communities of different blockchains and the battle of the technologies of different blockchains.

KPI (initial commitment)

Motivation & Goals

Attracting new and retaining existing Free TON users through Galaxy Online game processes, using TRUE NFT and teaching players the technologies and benefits of Free TON.

Why does Galaxy Online need Lock Stake rewards?

Our project moves towards decentralization and the ideal option for supporting the players of their race from Free Ton will be through the creation of a liquidity pool to Freetonium with the help of rewards, from the delegated Lock Stake, but not directly through tranches. At the same time, the fact of supporting the players of the race Free Ton is more important than the size of such support. This type of support is able to create an avalanche effect, the increase, involvement and retention of new users through the game race Free Ton.

Players of the Free TON race can mining Freetonium simply by playing and exchange it for TON Crystal from the rewards. The requested Lock Stake of 1,000K TON Crystal will support Free TON players at 4k TON Crystal per month and only 24k TON Crystal for all 6 months.

Cooperation overview

  1. Galaxy Online wants to use Free TON to bring to market a new DeFi game product using smart contracts and TRUE NFT and their application in the game.

  2. We plan to create our own trading platform for True NFT, as well as for NFT other partners.

  3. We want to create close integration with Free Ton Academy Subguvernance to provide players training materials on the benefits of Free TON blockchain technology and their application in the form of game tasks directly in the game interface (as part of the game content), for the execution of which players will receive awards in gaming values and Ton Crystals.

Example . One of the tasks for players consists of a 10-question test and is called “How is True NFT differs from NFT?”. Below, are links to tutorials. If all the answers are correct, the player will receive a pre-agreed prize, for example, 100m Energy and 2 TON Crystals.

2

Collaboration Benefits to Free TON

  1. The best option for engaging and retaining users in the Free TON community through a game shell with support for Freetonium mining, provided by the liquidity of the rewards.

  2. Effective and unobtrusive training of players in blockchain technologies and the benefits of Free TON through their usual game tasks with the encouragement of game values and TON Crystals.

  3. Introducing users to Free TON products through the game interface.

  4. A new marketplace in the Free TON ecosystem that allows the issuance and trading of TRUE NFTs and is closely tied to the game project using its own TRUE NFTs.

  5. The best way to support the partner project before its self-sufficiency projected in January 2022.

Implementation process

Integration of Free TON blockchain technologies into the gaming industry through the MMO game Galaxy Online and ecosystem satellite projects:

1. Creation of smart contracts TRUE NFT and their real application in the game:

  • analyzing the functionality of existing Marketplace
  • creation of technical specifications for the development of our own Marketplace
  • development of the layout of the Marketplace
  • сreating a layout of the Marketplace
  • script programming for the Marketplace
  • writing smart-contracts for the operation of a marketplace
  • part testing of the Marketplace
  • general testing of the entire Marketplace
  • adjusting the design and functionality of the Marketplace, removing bugs
  • launching the Marketplace with TRUE NFT trading: Space Stations, Commanders, Artifacts, Skins planets on it
  • launching the possibility of creating and trading TRUE NFT by ordinary users inside the Marketplace

2. Creation of a Marketplace with support for TRUE NFT-tokens based on Free TON smart contracts:

  • creation of technical specifications for the development of TRUE NFT Space Stations
  • creation of technical specifications for the development of TRUE NFT Commanders
  • creation of technical specifications for the development of TRUE NFT Artifacts
  • creation of technical specifications for the development of TRUE NFT Planet Skins
  • writing smart contracts for TRUE NFT Space Stations
  • writing smart contracts for TRUE NFT Commanders
  • writing smart contracts for TRUE NFT Artifacts
  • writing smart contracts for TRUE NFT Skins of planets
  • working on integration of TRUE NFT Space Stations into the game Galaxy Online
  • work on the integration of TRUE NFT Commanders into the game Galaxy Online
  • work on the integration of TRUE NFT Artifacts into the game Galaxy Online
  • work on the integration of TRUE NFT Planet Skins into the game Galaxy Online
  • Upgrade the marketplace with the ability for any user to create their own TRUE NFTs based on Free TON smart contracts in a simple, convenient constructor and the possibility of their subsequent listing on the marketplace

3. Close integration with Free Ton Academy Subguvernance:

  • сreating for Free Ton Academy Subguvernance special administration panel inside the site GalaxyOnline.io to add game training tasks to the game (links to training materials, questions-answers for test and choosing a reward for the correct passage of tests by players)
  • providing educational materials on the game Galaxy Online for Free Ton Academy Subguvernance

Promotion of Free TON blockchain technologies through the gaming audience by:

  1. Popularization of TRUE NFT based on Free TON smart contracts

  2. Popularization of Free TON itself through the Galaxy Online game and parts of its ecosystem:
    • The game itself, game quests, arenas and tournaments
    • Other mini-games: Space battle (analogue of sea combat), Duel, and in the future, other games
    • Mini-games of partners, which are planned to be embedded inside the Galaxy Online game. For example, PokerTON
    • Issuing own TRUE NFT tokens and trading them on the Marketplace

  3. Introducing new players who are not familiar with blockchain technologies and players who initially come into the game from other blockchains with the Free TON blockchain, its technologies and capabilities.

After complete integration, we will create and publish technical documentation for the integration.

Token allocation

- Stage 1. The initial token request: 10,000 TON Crystal every month for a period of 6 months :

  • Tokens use: Technical development and implementation of Free TON technologies according to KPI.
  • Developers : The integration will be carried out by the Galaxy Online team.
  • Reporting: Regular publication of progress reports for the Free TON community.

- Stage 2. The Lock Stake request: 1,000,000 TON Crystal through Depools for a period of 6 months:

  • Lock stake use: 1,000,000 TON Crystal
  • Distribution Rewards from Lock Stake : Rewards to players for participating in quests, Arenas and Tournaments. The Freetonium liquidity pool for Free TON players.
  • Reporting: Passing the audit through Analytics & Support Sub-governance at the end of Stage 2.

- Stage 3. At the end of Stage 2 and reporting to the Free TON community, based on the effect of the work done, will be formulated new proposal for additional TON Crystal tokens.

Wallet address (for the initial token request and for rewards from a locked stake through Depools )

0:b91311d5a2cea90f999492a62441965d8fa58df3a9644149ccef495c54a24614

4 Likes

I think that FreeTON should support any, even tiny, activity in gaming if it’s possible. Games is a big story for crypto, especially for TON. which is well suitable for this kind of software. Any steps in this direction are important and I respect those guys, chosen the “hard way”. It’s only my personal opinion…

5 Likes

This proposal is much better. The reporting aspect is important. The integration plan is definitely solid. Looking forward to watching it unfold and receive the reports on it. As it stands now in this last iteration, I support it.

5 Likes

Friends, on servers are scheduled work on the upgrade of hardware.

About within a few hours there are interruptions from the site and the game.
Thanks for understanding!


Друзья, на Серверах идут плановые работы по обновлению аппаратных средств.

Примерно в течение нескольких часов возможны перебои с работой сайта и игрой.
Спасибо за понимание!

1 Like

Friends, scheduled work on servers are successfully completed.

Website and game are available in normal mode.
Thank you for being with us!


Друзья, плановые работы на Серверах успешно закончены.

Сайт и игра доступны в штатном режиме.
Спасибо, что вы с нами!

2 Likes

FREE TON and GalaxyOnline.io COOPERATION


КООПЕРАЦИЯ Free TON и GalaxyOnline.io

Друзья, мы публикуем новый игровой концепт, в связи с новостями о кооперации с Free TON и другими блокчейнами.

2 Likes

Хорошие новости! Надеюсь на этом примере во Free TON будут приходить и другие интересные игровые проекты.

2 Likes

Дорогие друзья!

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

На текущий момент уже реализована часть запланированных пунктов согласно принятому пропозалу GalaxyOnline Partnership Proposal - #144 by GalaxyOnline.io, а другая часть находится в разработке.

На данный момент мы реализовали ряд нововведений, которые подняли проект на качественно-новый уровень. Сегодня мы хотим поделиться с вами промежуточным отчетом о проделанной нами работе над проектом з большой период с августа 2021 года по май 2022 года!

30.08.2021 – Большое обновление Галактики Онлайн. Объединение Галактик на единой карте

13.09.2021 – Статья о Галактике на Free TON House.

23.09.2021 – Создание новой корпорации BLOMAG в игре.

24.09.2021 – Анонс создания DAO
Результаты и итоги голосования за кандидатов в DAO от игроков - Galaxy Online

19.10.2021 - Полноценный ввод NFT Космических Станций в игру.

21.10.2021 – Обновление PvP мини-игр

27.10.2021 – Галактика Онлайн представлена на NEARCON2021

08.11.2021 – Апгрейд телеграм-бота оповещения игроков об атаках

18.11.2021 – Опубликованы основные концепты по игре:

Планеты:

Сражения:

Флот:

Космические Станции:

Лимиты:

Орбитальная Станция:

18.11.2021 – Уведомление игрового комьюнити о ходе работ над новой премиальной графикой.

22.11.2021 – Первый Отчет о проделанной работе за 12 - 19 ноября 2021 на Медиуме.

23.11.2021 – Введены Космические Секторы.

26.11.2021 – Отчет о проделанной работе за 20 - 26 ноября 2021 на Медиуме.

30.11.2021 – Вторая годовщина проекта Галактика Онлайн. Запуск NFT-скинов планет и выдача NFT-наград игрокам.

02.12.2021 – Запуск торговли NFT-скинов планет на маркетплэйсе PARAS

03.12.2021 – Отчет о проделанной работе за 27.11 - 03.12 на Медиуме

10.12.2021 – Отчет о проделанной работе за 4 - 10 декабря 2021 на Медиуме

17.12.2021 – Отчет о проделанной работе за 11 - 17 декабря 2021 на Медиуме

24.12.2021 – Отчет о проделанной работе за 18 - 24 декабря 2021 на Медиуме. Анонс новогоднего ивента.

30.12.2021 – Запуск Новогоднего Ивента до 14 января с различными призам, в том числе токенами DEL и Ever

14.01.2022 - Награждение участников ЗБТ

17.01.2022 – Подведение итогов новогоднего ивента

24.01.2022 – Отчет о проделанной работе за 15 - 21 января 2022 на Медиуме.

26.01.2022 – Партнерство с блокчейном Aurora

28.01.2022 – Запуск новой игровой расы Aurora

05.02.2022 – Отчет о проделанной работе за 22 января - 4 февраля 2022 на Медиуме.

11.03.2022 – Запуск нового сайта игры GalaxyOnline.io в современном дизайне.

11.03.2022 – Запуск игровой Вики на русском языке - Главная страница | WikiGalaxy

26.03.2022 – Большое обновление игрового рынка - Galaxy Online

01.04.2022 – Анонс запуска 1-го Сезона

04.04.2022 – Запуск новой 2-х уровневой реферальной системы для игроков

05.04.2022 – Анонс нового игрового режима - Сезоны.

06.04.2022 – Анонс новой игровой механики – Бомбардировки (вводится на 1-ом Сезоне).

07.04.2022 – Анонс комплексных боевых отчетов (вводятся на 1-ом Сезоне).

08.04.2022 – Анонс регенерации построек (вводится на 1-ом Сезоне).

09.04.2022 – Анонс системы планетарных Щитов (вводятся на 1-ом Сезоне).

10.04.2022 – Анонс нового планетарного интерфейса (вводится на 1-ом Сезоне).

11.04.2022 – Анонс новой рейтинговой системы (вводится на 1-ом Сезоне).

12.04.2022 - Успешный запуск 1-го Сезона

22.04.2022 – Анонс введение Конструктора NFT Артефактов. Ковка Артефактов – это возможность скрещивания NFT артефактов, в рамках которого игрок сможет повышать редкость Артефактов, изменять их характеристики и бонусы, а также регулировать энергопотребление!

02.05.2022 – успешный запуск 2-го Сезона

06.05.2022 – запуск Сезонного Магазина

10.05.2022 – Запуск Ковки NFT Артефактов для повышения редкости Артефактов в процессе их скрещивания.

1 Like

It was promised that players would be able to change the earned internal currency to $EVER and withdraw to their wallets. So far, that’s not the case. And can it be done at all sometime ? :person_shrugging:

Yes, we are working on it. Only an intermediate report was published above. There will be more reports. All funds for players according to the article indicated by you are on a grant wallet and are expected to enter the gaming mechanic.

1 Like

Dear friends!

The difficult global situation has affected the development of the GalaxyOnline.io project, the dynamics of development has decreased. But despite the hardships we continued to work on the project and achieved impressive results, without these results further development of the project would have been impossible.

At the moment, some of the planned items have already been implemented in accordance with the accepted proposal GalaxyOnline Partnership Proposal - #144 by GalaxyOnline.io, and the other items are under development.

At the moment we have implemented a number of innovations that have brought the project to a new level. Today we want to share with you an intermediate report on the work we have done on the project of a large period from August 2021 to May 2022!

08/30/2021 - Big Update of the Galaxy Online. Combining galaxies on a single map

09/13/2021 - Article about the Galaxy on Free Ton House.

09/24/2021 - Announcement Creation of DAO.
Results and voting results for DAO candidates from players - Galaxy Online

10/19/2021 - Full input nft space stations in the game.

10/21/2021 - Update PVP mini-games

10/27/2021 - Galaxy Online presented at NearCon2021

11/18/2021 - The main concepts on the game were published:

Planets:

Battles:

Fleet:

Space stations:

Limits:

Orbital station:

11/18/2021 - Notification of the game community on the progress of work on the new premium graphics.

11/22/2021 - The first report on the work done for November 12-19, 2021 on the medium.

11/23/2021 - introduced into the game Space sectors.

11/26/2021 - Report on the work done for November 20-26, 2021 on the Medium.

11/30/2021 - Second anniversary of the project Galaxy online. Launching NFT skins of the planets and issuing NFT awards to players.

12/02/2021 - Launch of trading NFT Skins of the planets on the Paras marketplase

12/03/2021 - Report on the work done for 11/27 - 12/03 on the Medium.

12/10/2021 - Report on the work done for December 4-10, 2021 on the Medium

12/17/2021 - Report on the work done for December 11-17, 2021 on the Medium

12/24/2021 - Report on the work done for December 18-24, 2021 on the Medium. The announcement of the New Year’s event.

12/30/2021 - Launch of the New Year’s event until January 14 with various prizes, including DEL and Ever tokens

01/14/2022 - Awarding of participants of the CBT

01/17/2022 - Summing up New Year’s event

01/24/2022 - Report on the work done for January 15-21, 2022 on the Medium.

01/26/2022 - Partnership with blockchain Aurora

01/28/2022 - Launch the new game race Aurora

02/05/2022-Report on the work done for January 22 - February 4, 2022 on a Medium.

03/11/2022 - Launch of the new site of the game Galaxyonline.io in modern design.

03/11/2022 - Launch of game wiki in Russian - Главная страница | WikiGalaxy

03/26/2022 - Big update the game market - Galaxy Online

04/04/2022 - Launch a new 2-level referral system for players

04/05/2022 - Announcement the new game mode - Seasons.

04/06/2022 - Announcement new game mechanics-Bombing (introduced in the 1st season).

04/07/2022 - Announcement complex combat reports (entered in the 1st season).

04/08/2022 - Announcement the regeneration of buildings (entered in the 1st season).

04/09/2022 - Announcement Systems of planetary shields (entered in the 1st season).

04/10/2022 - Announcement a new planetary interface (entered in the 1st season).

04/11/2022 - Announcement a new rating system (entered in the 1st season).

04/12/2022 - Successful launch of the 1st season

04/22/2022 - Announcement Introduction of the designer NFT artifacts. Forging artifacts is the possibility of crossing NFT artifacts, in which the player will be able to increase the rarity of artifacts, change their characteristics and bonuses, as well as regulate power consumption!

05/02/2022 - Successful launch of the 2nd season

05/06/2022 - Launch seasonal store

05/10/2022 - Launch NFT forging artifacts to increase the rarity of artifacts during their crossing.

2 Likes

Друзья, всем привет!
Согласно принятому пропозалу публикуем Техническую документацию на TNFT Космических Станций.
Система смартконтрактов TrueNFT состоит из многих контрактов,бибилиотек,интерфейсов и резолверов.

GitHub - tonlabs/True-NFT

Контракты:

Index.sol		        # Контракт для поиска в БЧ NFT-шек
IndexBasis.sol  		# Контракт для поиска в БЧ контракта коллекции(root)
Data.sol 				# контракт самой NFT
DataChunk.sol 			# контракт - хранилище медиа
NftRoot.sol				# контракт коллекции
NftRootBase.sol			# контракт коллекции с примером базовой имплементации
NftRootCustomMint.sol 	# контракт коллекции со своей логикой
Checks.sol				# контракт с проверками

Описание кастомных методов контракта Data

Структура NFT:

    struct SpaceStation{
        string station_name; 
        uint8 remoteness;
        uint16 level;
        string race;
        uint32 crd_x;
        uint32 crd_y;
        uint8 res_license;
        uint8 trade_license;
        uint8 prod_license;
        uint16 res_lvl;
        uint16 trade_lvl;
        uint16 prod_lvl;
   }

Метод инициализации NFT принимает аргументы для задания данных структуре самой КС

function stationInit(
        string station_name,
        uint8 remoteness,      
        uint16 level,           
        string race,            
        uint32 crd_x,          
        uint32 crd_y,           
        uint8 res_license,      
        uint8 trade_license,    
        uint8 prod_license,     
        uint16 res_lvl,         
        uint16 trade_lvl,       
        uint16 prod_lvl,
        uint128 royalty,
        uint128 royaltyMin        
        ) public 

Метод function setStationLevel(uint16 _res_lvl,uint16 _trade_lvl,uint16 _prod_lvl)public

позволяет задать уровень для КС.

Метод function setLicense(uint8 _res_lic,uint8 _trade_lic,uint8 _prod_lic)public

позволяет задать уровень лицензий.

Метод function setCoordinates(uint32 _crdX,uint32 _crdY,uint8 _remoteness)public

позволяет задать координаты для КС

Метод function setStationName(string _station_name)public

позволяет задать имя для КС.

Метод function getStation() возвращает структуру КС

Метод

function setMetadata(
        optional(uint128) height,
        optional(uint128) width,
        optional(uint128) duration,
        optional(string) extra,
        optional(string) json
        ) public

позволяет изменить метадату NFT.

Можно изменить отдельный аргумент без обязательного использования всех.

Описание кастомных методов контракта manageTnft.sol

Контракт предназначен для управления всей коллекцией и для деплоя коллекции.

При деплое контракта в конструктор нужно передать

constructor(
	TvmCell codeRoot,           # Код контракта коллекции
	TvmCell codeIndex,          # Код контракта Index
	TvmCell codeIndexBasis,     # Код контракта IndexBasis
	TvmCell codeData,           # Код контракта Data
	TvmCell codeDataChunk       # Код контракта DataChunk
) public

Команда деплоя контракта manageTnft:

./tonos-cli deploy --abi manageTnft.abi.json --sign manageTnft.keys.json manageTnft.tvc

{"codeRoot":"",

"codeIndex":"",

"codeIndexBasis":"",

"codeData":"",

"codeDataChunk":""}

Они сохраняются в соответствующие переменные в контракте и используются для деплоя Root’а

Переменные контракта:

address _addrRoot;           # Адрес корневого контракта,задается при деплое Root'a
uint128 currentID = 0;       # ID текущего NFT
uint128 _baseRoyalty;        # Роялти уплачиваемое при продаже 1000 = 1%
uint128 _baseRoyaltyMin;     # Роялти минимальное уплачиваемое даже при простом трансфере.
uint16 version = 0;          # Версия контракта, используется в методе onCodeUpgrade

Метод function getCode(uint8 _id) public view returns(TvmCell)

возвращает код контракта сохранённого в переменных

_id = 
    _codeRoot; 		//0
    _indexCode;		//1
    _indexBasisCode;//2
    _dataCode; 		//3
    _dataChunkCode;	//4

Команда вызова метода:

./tonos-cli run '0:адрес_контракта_manageTnft' getCode '{"_id":0}' --abi manageTnft.abi.json

Методы:

function updateIndexCode(TvmCell newIndexCode)

function updateIndexBasisCode(TvmCell newIndexBasisCode)

function updateDataCode(TvmCell newDataCode)

function updateDataChunkCode(TvmCell newDataChunkCode)

принимают в качестве аргумента код соответствующего контракт и делают кроссконтрактный вызов для изменения кода соответствующего контракта в Root контракте.

Команды:

./tonos-cli run '0:адрес_контракта_manageTnft' updateIndexCode'{"newIndexCode":"string"}' --abi manageTnft.abi.json --sign manageTnft.keys.json
--
./tonos-cli run '0:адрес_контракта_manageTnft' updateIndexBasisCode'{"newIndexBasisCode":"string"}' --abi manageTnft.abi.json --sign manageTnft.keys.json
--
./tonos-cli run '0:адрес_контракта_manageTnft' updateDataCode'{"newDataCode":"string"}' --abi manageTnft.abi.json --sign manageTnft.keys.json
--
./tonos-cli run '0:адрес_контракта_manageTnft' updateDataChunkCode'{"newDataChunkCode":"string"}' --abi manageTnft.abi.json --sign manageTnft.keys.json

Метод:

function updateRootCode(TvmCell newRootCode)

обновляет код контракта Root в контракте manageTnft

Команда вызова апдейтов:

./tonos-cli run '0:адрес_контракта_manageTnft' updateRootCode '{"newRootCode":"string"}' --abi manageTnft.abi.json --sign manageTnft.keys.json

Метод:

function mintNft(
		string name,          # Имя NFT
        string description,   # Описание NFT
        uint256 contentHash,  # Хэш контента
        string mimeType,      # Тип медиа файла в mimeType
        uint8 chunks,         # На сколько частей разбивается медиа файл NFT
        uint128 chunkSize,    # Размер каждый части в байтах
        uint128 size,         # Размер всего медиа файла в байтах
        Meta meta,            # Метадата
        address owner         # Адрес владельца
     )public onlyOwner returns(address dataAddr)

принимает необходимые аргументы для деплоя контракта Data и возвращает адрес задеплоенного контракта Data

Методы:

function setRoyalty(uint128 royalty, uint128 royaltyMin)

задаёт роялти для коллекции

Метод:

function changeRoyaltyToNft(address nftData,uint128 royalty, uint128 royaltyMin)

изменяет роялти конкретного NFT принимая в качестве аргументов адрес NFT и роялти

Команда:

./tonos-cli call '0:адрес_контракта_manageTnft' setRoyalty '{"royalty":5000,"royaltyMin":300000000}' --abi manageTnft.abi.json --sign manageTnft.keys.json

Методы:

function setStationLevel(address nftData,uint16 res_lvl,uint16 trade_lvl,uint16 prod_lvl)

function setLicense(address nftData,uint8 res_lic,uint8 trade_lic,uint8 prod_lic)

function setCoordinates(address nftData,uint32 crdX,uint32 crdY,uint8 remoteness)

function setStationName(address nftData,string station_name)
изменяют соответствующие параметры самого NFT после инициализации.

Команды:

./tonos-cli call '0:адрес_контракта_manageTnft' setStationLevel '{"_nftData":"0:e2dedbed8a6cb929fc032112aa97e3a16e60d1ffcad15225e3a47ab198dd6fae","_res_lvl":5,"_trade_lvl":5,"_prod_lvl":5}' --abi manageTnft.abi.json --sign manageTnft.keys.json

--

./tonos-cli call '0:адрес_контракта_manageTnft' setLicense '{"_nftData":"0:e2dedbed8a6cb929fc032112aa97e3a16e60d1ffcad15225e3a47ab198dd6fae","_res_lic":3,"_trade_lic":3,"_prod_lic":3}' --abi manageTnft.abi.json --sign manageTnft.keys.json

--

./tonos-cli call '0:адрес_контракта_manageTnft' setCoordinates '{"_nftData":"0:e2dedbed8a6cb929fc032112aa97e3a16e60d1ffcad15225e3a47ab198dd6fae","_name":"NewTestName","_crdX":44444,"_crdY":55555,"_remoteness":3}' --abi manageTnft.abi.json --sign manageTnft.keys.json

--

./tonos-cli call '0:адрес_контракта_manageTnft' setStationName '{"_nftData":"0:e2dedbed8a6cb929fc032112aa97e3a16e60d1ffcad15225e3a47ab198dd6fae","_name":"NewTestName"}' --abi manageTnft.abi.json --sign manageTnft.keys.json

Метод инициализирующий сам NFT:

function stationInit(
    	address nftDataAddr,
    	string station_name,
        uint8 remoteness,       
        uint16 level,           
        string race,            
        uint32 crd_x,           
        uint32 crd_y,           
        uint8 res_license,      
        uint8 trade_license,    
        uint8 prod_license,     
        uint16 res_lvl,         
        uint16 trade_lvl,       
        uint16 prod_lvl        
        )

Команда:

./tonos-cli call '0:адрес_контракта_manageTnft' stationInit '{"nftDataAddr":"0:957b77baa220573afbe18b25e84349ddfea38f477a1aa2f0595773a34d072223","station_name":"TestName KS","remoteness":99,"level":100,"race":"Minter","crd_x":11111,"crd_y":22222,"res_license":1,"trade_license":2,"prod_license":3,"res_lvl":1,"trade_lvl":2,"prod_lvl":3}' --abi manageTnft.abi.json --sign manageTnft.keys.json

Метод:

function deployNftRoot(
		MintType mintType,
        uint128 fee,
        string name,
        string descriprion,
        bytes icon
        )

деплоит рут контракт передавая параметры описания контракта и иконку.

Fee и mintType в нашем случае не нужны

Команда:
./tonos-cli call '0:адрес_контракта_manageTnft' deployNftRoot '{"mintType":0,"fee":5000,"name":"SS","descriprion":"short","icon":""}'--abi manageTnft.abi.json --sign manageTnft.keys.json

Метод:
function getRootAddr()
Возвращает адрес Root контракта

Команда
./tonos-cli run '0:адрес_контракта_manageTnft' getRootAddr '{}' --abi manageTnft.abi.json

Метод:
function deployDataChunk(address _addrData,bytes chunk, uint128 chunkNumber)
деплоит части медиа файла

Команда:
./tonos-cli call '0:адрес_контракта_manageTnft' deployDataChunk '{"_addrData":"0:e9b87723ac49dcdc88e0f52679716e29f619b48b47e3a59cfe2b0b4d58299c1b","chunkNumber":1,"chunk":""}' --abi manageTnft.abi.json --sign manageTnft.keys.json

Метод:
function putOnSaleNft(address nftDataAddr,uint128 price )
выставляет на продажу NFT принимая аргументы: адрес NFT и цену в нанотонах

1_000_000_000 = 1 Ever

Кoманда:
./tonos-cli call '0:адрес_контракта_manageTnft' putOnSaleNft '{"nftDataAddr":"e66c581822fe642fb3219979289f6cb2d30368b1bdac0dd4e26568dd829e86ef","price":1500000000}' --abi manageTnft.abi.json --sign manageTnft.keys.json

Метод:
function transferNft(address nftDataAddr,address addrTo)
передаёт NFT от адреса автора

Команда:
./tonos-cli call '0:адрес_контракта_manageTnft' transferNft '{"nftDataAddr":"e66c581822fe642fb3219979289f6cb2d30368b1bdac0dd4e26568dd829e86ef","addrTo":"0:09a13e4faa1fa7d1a98002213571e7deddd0f0453450342dcbdbe2f6354f45ad"}' --abi manageTnft.abi.json --sign manageTnft.keys.json

Метод:
function calcDataAddr(uint256 id)
рассчитывает адрес Data контракта по его ID NFT

Команда:
./tonos-cli run '0:адрес_контракта_manageTnft' calcDataAddr'{"id":1}' --abi manageTnft.abi.json

Метод:

function setMetadata(
    	address nftDataAddr,
    	optional(uint128) height,
        optional(uint128) width,
        optional(uint128) duration,
        optional(string) extra,
        optional(string) json
        )

Смена meta:
./tonos-cli call '0:адрес_контракта_manageTnft' setMetadata '{"nftDataAddr":"e66c581822fe642fb3219979289f6cb2d30368b1bdac0dd4e26568dd829e86ef","extra":"test"}' --abi manageTnft.abi.json --sign manageTnft.keys.json
Задаёт метадату отдельного NFT. Выполняет кросс вызов к контракту Data

2 Likes

Friends, hello everyone!
According to the accepted proposal, we publish the Technical Documentation for the TNFT Space Stations.
The TrueNFT smart contract system consists of many contracts, libraries, interfaces and resolvers.

GitHub - tonlabs/True-NFT

Contracts:

Index.sol		        # A contract to find NFT on the blockchain.
IndexBasis.sol  		# Collection(root) contract to search in BC
Data.sol 				# NFT contract
DataChunk.sol 			# contract - media repository
NftRoot.sol				# collection contract
NftRootBase.sol			# collection contract with an example of basic implementation
NftRootCustomMint.sol 	# contract collections with their own logic
Checks.sol				# verifiable contract

Description of custom Data contract methods

Structure of NFT:

    struct SpaceStation{
        string station_name; 
        uint8 remoteness;
        uint16 level;
        string race;
        uint32 crd_x;
        uint32 crd_y;
        uint8 res_license;
        uint8 trade_license;
        uint8 prod_license;
        uint16 res_lvl;
        uint16 trade_lvl;
        uint16 prod_lvl;
   }

The NFT initialization method takes arguments to set the data to the structure of the CS itself

function stationInit(
        string station_name,
        uint8 remoteness,      
        uint16 level,           
        string race,            
        uint32 crd_x,          
        uint32 crd_y,           
        uint8 res_license,      
        uint8 trade_license,    
        uint8 prod_license,     
        uint16 res_lvl,         
        uint16 trade_lvl,       
        uint16 prod_lvl,
        uint128 royalty,
        uint128 royaltyMin        
        ) public 

Method function setStationLevel(uint16 _res_lvl,uint16 _trade_lvl,uint16 _prod_lvl)public

allows you to set the level for the Station.

Method function setLicense(uint8 _res_lic,uint8 _trade_lic,uint8 _prod_lic)public

allows you to set the license level.

Method function setCoordinates(uint32 _crdX,uint32 _crdY,uint8 _remoteness)public

allows you to set the coordinates for the Station

Method function setStationName(string _station_name)public

allows you to set a name for the Station.

Method function getStation() возвращает структуру КС

Method

function setMetadata(
        optional(uint128) height,
        optional(uint128) width,
        optional(uint128) duration,
        optional(string) extra,
        optional(string) json
        ) public

allows you to change the NFT metadata.

You can change an individual argument without necessarily using all of them.

Description of the custom methods of the manageTnft.sol contract

The contract is for managing the entire collection and for depositing the collection.

When you apply a contract to the constructor you need to pass

constructor(
	TvmCell codeRoot,           # Collection contract code
	TvmCell codeIndex,          # Index Contract Code
	TvmCell codeIndexBasis,     # IndexBasis Contract Code
	TvmCell codeData,           # Data Contract Code
	TvmCell codeDataChunk       # DataChunk Contract Code
) public

Command for manageTnft deploying manageTnft:

./tonos-cli deploy --abi manageTnft.abi.json --sign manageTnft.keys.json manageTnft.tvc

{"codeRoot":"",

"codeIndex":"",

"codeIndexBasis":"",

"codeData":"",

"codeDataChunk":""}

They are saved in the corresponding variables in the contract and used for Root contract deployment
Contract variables:

address _addrRoot;           # The address of the root contract, which is set during the deployment Root
uint128 currentID = 0;       # ID current NFT
uint128 _baseRoyalty;        # Royalty payable on sale 1000 = 1%
uint128 _baseRoyaltyMin;     # The royalty is the minimum payable even for a simple transfer.
uint16 version = 0;          # The version of the contract used in the method onCodeUpgrade

Method function getCode(uint8 _id) public view returns(TvmCell)

returns the code of the contract stored in the variables

_id = 
    _codeRoot; 		//0
    _indexCode;		//1
    _indexBasisCode;//2
    _dataCode; 		//3
    _dataChunkCode;	//4

Method call command:

./tonos-cli run '0:адрес_контракта_manageTnft' getCode '{"_id":0}' --abi manageTnft.abi.json

Methods:

function updateIndexCode(TvmCell newIndexCode)

function updateIndexBasisCode(TvmCell newIndexBasisCode)

function updateDataCode(TvmCell newDataCode)

function updateDataChunkCode(TvmCell newDataChunkCode)

take the code of the corresponding contract as an argument and make a crosscontract call to change the code of the corresponding contract in the Root contract.

Commands:

./tonos-cli run '0:адрес_контракта_manageTnft' updateIndexCode'{"newIndexCode":"string"}' --abi manageTnft.abi.json --sign manageTnft.keys.json
--
./tonos-cli run '0:адрес_контракта_manageTnft' updateIndexBasisCode'{"newIndexBasisCode":"string"}' --abi manageTnft.abi.json --sign manageTnft.keys.json
--
./tonos-cli run '0:адрес_контракта_manageTnft' updateDataCode'{"newDataCode":"string"}' --abi manageTnft.abi.json --sign manageTnft.keys.json
--
./tonos-cli run '0:адрес_контракта_manageTnft' updateDataChunkCode'{"newDataChunkCode":"string"}' --abi manageTnft.abi.json --sign manageTnft.keys.json

Method:

function updateRootCode(TvmCell newRootCode)

updates the Root contract code in the manageTnft contract

Updates call command:

./tonos-cli run '0:адрес_контракта_manageTnft' updateRootCode '{"newRootCode":"string"}' --abi manageTnft.abi.json --sign manageTnft.keys.json

Method:

function mintNft(
		string name,          # Name of NFT
        string description,   # Description of NFT
        uint256 contentHash,  # Hash of content
        string mimeType,      # media type in mimeType
        uint8 chunks,         # How many parts a media file is divided into NFT
        uint128 chunkSize,    # The size of each part in bytes
        uint128 size,         # Total media file size in bytes
        Meta meta,            # Metadata
        address owner         # Address of owner
     )public onlyOwner returns(address dataAddr)

takes the necessary arguments for deplotting the Data contract and returns the address of the deplotized Data contract

Methods:

function setRoyalty(uint128 royalty, uint128 royaltyMin)

sets the royalty for the collection

Method:

function changeRoyaltyToNft(address nftData,uint128 royalty, uint128 royaltyMin)

changes the royalty of a particular NFT by taking the address of the NFT and the royalty as arguments

Command:

./tonos-cli call '0:адрес_контракта_manageTnft' setRoyalty '{"royalty":5000,"royaltyMin":300000000}' --abi manageTnft.abi.json --sign manageTnft.keys.json

Methods:

function setStationLevel(address nftData,uint16 res_lvl,uint16 trade_lvl,uint16 prod_lvl)

function setLicense(address nftData,uint8 res_lic,uint8 trade_lic,uint8 prod_lic)

function setCoordinates(address nftData,uint32 crdX,uint32 crdY,uint8 remoteness)

function setStationName(address nftData,string station_name)
change the corresponding parameters of the NFT itself after initialization.

Commands:

./tonos-cli call '0:адрес_контракта_manageTnft' setStationLevel '{"_nftData":"0:e2dedbed8a6cb929fc032112aa97e3a16e60d1ffcad15225e3a47ab198dd6fae","_res_lvl":5,"_trade_lvl":5,"_prod_lvl":5}' --abi manageTnft.abi.json --sign manageTnft.keys.json

--

./tonos-cli call '0:адрес_контракта_manageTnft' setLicense '{"_nftData":"0:e2dedbed8a6cb929fc032112aa97e3a16e60d1ffcad15225e3a47ab198dd6fae","_res_lic":3,"_trade_lic":3,"_prod_lic":3}' --abi manageTnft.abi.json --sign manageTnft.keys.json

--

./tonos-cli call '0:адрес_контракта_manageTnft' setCoordinates '{"_nftData":"0:e2dedbed8a6cb929fc032112aa97e3a16e60d1ffcad15225e3a47ab198dd6fae","_name":"NewTestName","_crdX":44444,"_crdY":55555,"_remoteness":3}' --abi manageTnft.abi.json --sign manageTnft.keys.json

--

./tonos-cli call '0:адрес_контракта_manageTnft' setStationName '{"_nftData":"0:e2dedbed8a6cb929fc032112aa97e3a16e60d1ffcad15225e3a47ab198dd6fae","_name":"NewTestName"}' --abi manageTnft.abi.json --sign manageTnft.keys.json

Method initializing of NFT:

function stationInit(
    	address nftDataAddr,
    	string station_name,
        uint8 remoteness,       
        uint16 level,           
        string race,            
        uint32 crd_x,           
        uint32 crd_y,           
        uint8 res_license,      
        uint8 trade_license,    
        uint8 prod_license,     
        uint16 res_lvl,         
        uint16 trade_lvl,       
        uint16 prod_lvl        
        )

Command:

./tonos-cli call '0:адрес_контракта_manageTnft' stationInit '{"nftDataAddr":"0:957b77baa220573afbe18b25e84349ddfea38f477a1aa2f0595773a34d072223","station_name":"TestName KS","remoteness":99,"level":100,"race":"Minter","crd_x":11111,"crd_y":22222,"res_license":1,"trade_license":2,"prod_license":3,"res_lvl":1,"trade_lvl":2,"prod_lvl":3}' --abi manageTnft.abi.json --sign manageTnft.keys.json

Method:

function deployNftRoot(
		MintType mintType,
        uint128 fee,
        string name,
        string descriprion,
        bytes icon
        )

Deploys the root contract by passing the parameters of the contract description and the icon.

Fee and mintType are not necessary in our case

Command:
./tonos-cli call '0:адрес_контракта_manageTnft' deployNftRoot '{"mintType":0,"fee":5000,"name":"SS","descriprion":"short","icon":""}'--abi manageTnft.abi.json --sign manageTnft.keys.json

Method:
function getRootAddr()
Returns the address of the Root contract

Command
./tonos-cli run '0:адрес_контракта_manageTnft' getRootAddr '{}' --abi manageTnft.abi.json

Method:
function deployDataChunk(address _addrData,bytes chunk, uint128 chunkNumber)
Deploy parts of a media file

Command:
./tonos-cli call '0:адрес_контракта_manageTnft' deployDataChunk '{"_addrData":"0:e9b87723ac49dcdc88e0f52679716e29f619b48b47e3a59cfe2b0b4d58299c1b","chunkNumber":1,"chunk":""}' --abi manageTnft.abi.json --sign manageTnft.keys.json

Method:
function putOnSaleNft(address nftDataAddr,uint128 price )
puts up for sale NFT taking arguments: NFT address and price in nanotons

1_000_000_000 = 1 Ever

Command:
./tonos-cli call '0:адрес_контракта_manageTnft' putOnSaleNft '{"nftDataAddr":"e66c581822fe642fb3219979289f6cb2d30368b1bdac0dd4e26568dd829e86ef","price":1500000000}' --abi manageTnft.abi.json --sign manageTnft.keys.json

Method:
function transferNft(address nftDataAddr,address addrTo)
transfer the NFT from the author’s address

Command:
./tonos-cli call '0:адрес_контракта_manageTnft' transferNft '{"nftDataAddr":"e66c581822fe642fb3219979289f6cb2d30368b1bdac0dd4e26568dd829e86ef","addrTo":"0:09a13e4faa1fa7d1a98002213571e7deddd0f0453450342dcbdbe2f6354f45ad"}' --abi manageTnft.abi.json --sign manageTnft.keys.json

Method:
function calcDataAddr(uint256 id)
calculates the Data address of the contract by its NFT ID

Command:
./tonos-cli run '0:адрес_контракта_manageTnft' calcDataAddr'{"id":1}' --abi manageTnft.abi.json

Method:

function setMetadata(
    	address nftDataAddr,
    	optional(uint128) height,
        optional(uint128) width,
        optional(uint128) duration,
        optional(string) extra,
        optional(string) json
        )

Change of meta:
./tonos-cli call '0:адрес_контракта_manageTnft' setMetadata '{"nftDataAddr":"e66c581822fe642fb3219979289f6cb2d30368b1bdac0dd4e26568dd829e86ef","extra":"test"}' --abi manageTnft.abi.json --sign manageTnft.keys.json
Sets the metadata of an individual NFT. Executes a cross call to the Data contract

2 Likes

Друзья, всем привет!
Согласно принятому пропозалу публикуем Техническую документацию на TNFT Командоров.
Система смартконтрактов TrueNFT состоит из многих контрактов,бибилиотек,интерфейсов и резолверов.

https://github.com/tonlabs/True-NFT

Контракты:

Index.sol		        # Контракт для поиска в БЧ NFT-шек
IndexBasis.sol  		# Контракт для поиска в БЧ контракта коллекции(root)
Data.sol 				# контракт самой NFT
DataChunk.sol 			# контракт - хранилище медиа
NftRoot.sol				# контракт коллекции
NftRootBase.sol			# контракт коллекции с примером базовой имплементации
NftRootCustomMint.sol 	# контракт коллекции со своей логикой
Checks.sol				# контракт с проверками

Описание кастомных методов контракта Data

Структура NFT:

    struct Commander{
        string com_name;
        string series;
        uint16 level;
        string rarity;
        string class;
        string[] license;
        mapping(string=>string) skills;
    }

Метод инициализации NFT принимает аргументы для задания данных структуре командора

function commanderInit(
        string com_name;
        string series;
        uint16 level;
        string rarity;
        string class;
        string[] license;
        mapping(string=>string) skills;
        uint16 prod_lvl,
        uint128 royalty,
        uint128 royaltyMin     
        ) public 

Метод function setCmdLevel(uint16 _new_lvl)public

позволяет задать уровень для командора.

Метод function addCmdLicense(string _new_license)public

позволяет добавить лицензии для командора.

Метод function getCommander() возвращает структуру командора

Метод

function setMetadata(
        optional(uint128) height,
        optional(uint128) width,
        optional(uint128) duration,
        optional(string) extra,
        optional(string) json
        ) public

позволяет изменить метадату NFT.

Можно изменить отдельный аргумент без обязательного использования всех.

Описание кастомных методов контракта manageTnft.sol

Контракт предназначен для управления всей коллекцией и для деплоя коллекции.

При деплое контракта в конструктор нужно передать

constructor(
	TvmCell codeRoot,           # Код контракта коллекции
	TvmCell codeIndex,          # Код контракта Index
	TvmCell codeIndexBasis,     # Код контракта IndexBasis
	TvmCell codeData,           # Код контракта Data
	TvmCell codeDataChunk       # Код контракта DataChunk
) public

Команда деплоя контракта manageTnft:

./tonos-cli deploy --abi manageTnft.abi.json --sign manageTnft.keys.json manageTnft.tvc

{"codeRoot":"",

"codeIndex":"",

"codeIndexBasis":"",

"codeData":"",

"codeDataChunk":""}

Они сохраняются в соответствующие переменные в контракте и используются для деплоя Root’а

Переменные контракта:

address _addrRoot;           # Адрес корневого контракта,задается при деплое Root'a
uint128 currentID = 0;       # ID текущего NFT
uint128 _baseRoyalty;        # Роялти уплачиваемое при продаже 1000 = 1%
uint128 _baseRoyaltyMin;     # Роялти минимальное уплачиваемое даже при простом трансфере.
uint16 version = 0;          # Версия контракта, используется в методе onCodeUpgrade

Метод function getCode(uint8 _id) public view returns(TvmCell)

возвращает код контракта сохранённого в переменных

_id = 
    _codeRoot; 		//0
    _indexCode;		//1
    _indexBasisCode;//2
    _dataCode; 		//3
    _dataChunkCode;	//4

Команда вызова метода:

./tonos-cli run '0:адрес_контракта_manageTnft' getCode '{"_id":0}' --abi manageTnft.abi.json

Методы:

function updateIndexCode(TvmCell newIndexCode)

function updateIndexBasisCode(TvmCell newIndexBasisCode)

function updateDataCode(TvmCell newDataCode)

function updateDataChunkCode(TvmCell newDataChunkCode)

принимают в качестве аргумента код соответствующего контракт и делают кроссконтрактный вызов для изменения кода соответствующего контракта в Root контракте.

Команды:

./tonos-cli run '0:адрес_контракта_manageTnft' updateIndexCode'{"newIndexCode":"string"}' --abi manageTnft.abi.json --sign manageTnft.keys.json
--
./tonos-cli run '0:адрес_контракта_manageTnft' updateIndexBasisCode'{"newIndexBasisCode":"string"}' --abi manageTnft.abi.json --sign manageTnft.keys.json
--
./tonos-cli run '0:адрес_контракта_manageTnft' updateDataCode'{"newDataCode":"string"}' --abi manageTnft.abi.json --sign manageTnft.keys.json
--
./tonos-cli run '0:адрес_контракта_manageTnft' updateDataChunkCode'{"newDataChunkCode":"string"}' --abi manageTnft.abi.json --sign manageTnft.keys.json

Метод:

function updateRootCode(TvmCell newRootCode)

обновляет код контракта Root в контракте manageTnft

Команда вызова апдейтов:

./tonos-cli run '0:адрес_контракта_manageTnft' updateRootCode '{"newRootCode":"string"}' --abi manageTnft.abi.json --sign manageTnft.keys.json

Метод:

function mintNft(
		string name,          # Имя NFT
        string description,   # Описание NFT
        uint256 contentHash,  # Хэш контента
        string mimeType,      # Тип медиа файла в mimeType
        uint8 chunks,         # На сколько частей разбивается медиа файл NFT
        uint128 chunkSize,    # Размер каждый части в байтах
        uint128 size,         # Размер всего медиа файла в байтах
        Meta meta,            # Метадата
        address owner         # Адрес владельца
     )public onlyOwner returns(address dataAddr)

принимает необходимые аргументы для деплоя контракта Data и возвращает адрес задеплоенного контракта Data

Методы:

function setRoyalty(uint128 royalty, uint128 royaltyMin)

задаёт роялти для коллекции

Метод:

function changeRoyaltyToNft(address nftData,uint128 royalty, uint128 royaltyMin)

изменяет роялти конкретного NFT принимая в качестве аргументов адрес NFT и роялти

Команда:

./tonos-cli call '0:адрес_контракта_manageTnft' setRoyalty '{"royalty":5000,"royaltyMin":300000000}' --abi manageTnft.abi.json --sign manageTnft.keys.json

Методы:

function setCmdLevel(address nftData,uint16 new_lvl)

function addCmdLicense(address nftData,string new_license)
изменяют соответствующие параметры самого NFT после инициализации.

Команды:

./tonos-cli call '0:адрес_контракта_manageTnft' setCmdLevel '{"_nftData":"0:e2dedbed8a6cb929fc032112aa97e3a16e60d1ffcad15225e3a47ab198dd6fae","new_lvl":55}' --abi manageTnft.abi.json --sign manageTnft.keys.json

--

./tonos-cli call '0:адрес_контракта_manageTnft' addCmdLicense '{"_nftData":"aдрес_нфт_дата","new_license":"XL"}' --abi manageTnft.abi.json --sign manageTnft.keys.json

Метод инициализирующий сам NFT:

    function commanderInit(
    	address nftDataAddr,
        string com_name,
        string series,
        uint16 level,
        string rarity,
        string class,
        vector(string) license,
        mapping(string=>string) skills
        )

Команда:

./tonos-cli call '0:адрес_контракта_manageTnft' commanderInit '{"nftDataAddr":"aдрес_нфт_дата","com_name":"TestName NFT","series":"C001","level":1,"rarity":"Epic","class":"warrior","license":["X"],"skills":{"skill1":"55"}}' --abi manageTnft.abi.json --sign manageTnft.keys.json

Метод:

function deployNftRoot(
		MintType mintType,
        uint128 fee,
        string name,
        string descriprion,
        bytes icon
        )

деплоит рут контракт передавая параметры описания контракта и иконку.

Fee и mintType в нашем случае не нужны

Команда:
./tonos-cli call '0:адрес_контракта_manageTnft' deployNftRoot '{"mintType":0,"fee":5000,"name":"SS","descriprion":"short","icon":""}'--abi manageTnft.abi.json --sign manageTnft.keys.json

Метод:
function getRootAddr()
Возвращает адрес Root контракта

Команда
./tonos-cli run '0:адрес_контракта_manageTnft' getRootAddr '{}' --abi manageTnft.abi.json

Метод:
function deployDataChunk(address _addrData,bytes chunk, uint128 chunkNumber)
деплоит части медиа файла

Команда:
./tonos-cli call '0:адрес_контракта_manageTnft' deployDataChunk '{"_addrData":"0:e9b87723ac49dcdc88e0f52679716e29f619b48b47e3a59cfe2b0b4d58299c1b","chunkNumber":1,"chunk":""}' --abi manageTnft.abi.json --sign manageTnft.keys.json

Метод:
function putOnSaleNft(address nftDataAddr,uint128 price )
выставляет на продажу NFT принимая аргументы: адрес NFT и цену в нанотонах

1_000_000_000 = 1 Ever

Кoманда:
./tonos-cli call '0:адрес_контракта_manageTnft' putOnSaleNft '{"nftDataAddr":"e66c581822fe642fb3219979289f6cb2d30368b1bdac0dd4e26568dd829e86ef","price":1500000000}' --abi manageTnft.abi.json --sign manageTnft.keys.json

Метод:
function transferNft(address nftDataAddr,address addrTo)
передаёт NFT от адреса автора

Команда:
./tonos-cli call '0:адрес_контракта_manageTnft' transferNft '{"nftDataAddr":"e66c581822fe642fb3219979289f6cb2d30368b1bdac0dd4e26568dd829e86ef","addrTo":"0:09a13e4faa1fa7d1a98002213571e7deddd0f0453450342dcbdbe2f6354f45ad"}' --abi manageTnft.abi.json --sign manageTnft.keys.json

Метод:
function calcDataAddr(uint256 id)
рассчитывает адрес Data контракта по его ID NFT

Команда:
./tonos-cli run '0:адрес_контракта_manageTnft' calcDataAddr'{"id":1}' --abi manageTnft.abi.json

Метод:

function setMetadata(
    	address nftDataAddr,
    	optional(uint128) height,
        optional(uint128) width,
        optional(uint128) duration,
        optional(string) extra,
        optional(string) json
        )

Смена meta:
./tonos-cli call '0:адрес_контракта_manageTnft' setMetadata '{"nftDataAddr":"e66c581822fe642fb3219979289f6cb2d30368b1bdac0dd4e26568dd829e86ef","extra":"test"}' --abi manageTnft.abi.json --sign manageTnft.keys.json
Задаёт метадату отдельного NFT. Выполняет кросс вызов к контракту Data

2 Likes

Нами была опуликована техническая документация на TNFT Космических Станций:

Сегодня мы продолжим публиковать техническую документацию по другим TNFT

We publish the technical documentation on the TNFT of Space Stations:
-in Russian
-in English

Today we will continue to publish technical documentation on other TNFT

1 Like