paint-brush
Чӣ тавр сохтани Протоколи пардохт барои як намоиш дар занҷир дар Rootstockаз ҷониби@nescampos
376 хониш
376 хониш

Чӣ тавр сохтани Протоколи пардохт барои як намоиш дар занҷир дар Rootstock

аз ҷониби Néstor Campos9m2024/11/30
Read on Terminal Reader

Хеле дароз; Хондан

Monetizado як протоколи пардохт барои як намоиш аст. Он ба шумо имкон медиҳад, ки ҳама гуна веб саҳифа ва мундариҷаи статикиро тавассути Web3.0 пул кунед. Он метавонад барои ҳифзи саҳифаҳо истифода шавад, то танҳо муштариён онро бубинанд.
featured image - Чӣ тавр сохтани Протоколи пардохт барои як намоиш дар занҷир дар Rootstock
Néstor Campos HackerNoon profile picture

Дар иқтисодиёти таваҷҷӯҳ (Web 2.0), корбаронро маҷбур мекунанд, ки барои обуна барои дастрасӣ ба мундариҷаи истисноӣ (ҳама намуди мундариҷа, аз ҷумла мундариҷаи калонсолон) пардохт кунанд, аммо ҳеҷ чиз кафолат намедиҳад, ки шумо бартариҳои пардохткардаатонро ба даст оред, ё аз сабаби он ки мундариҷа офаринанда эҷоди чизҳои навро идома намедиҳад ё шумо бояд ба муддати тӯлонӣ обуна шавед, вақте ки шумо танҳо барои он чизе, ки истеъмол мекунед, пардохт кардан мехоҳед.


Бо вуҷуди ин, Web 3.0, иқтисодиёти ният, ба корбарон имкон медиҳад, ки танҳо барои он чизе, ки истеъмол мекунанд, ба ҷои муддати тӯлонӣ тавассути микропардохтҳо пардохт кунанд. Дар навбати худ, он эҷодкорони мундариҷаро ташвиқ мекунад, ки бо эҷодҳои бештар навсозӣ кунанд ва даромади худро фавран бо хароҷоти хеле кам бидуни вобастагӣ аз шлюзҳои мутамарказ ба даст оранд.

Monetizado, Протоколи пардохт барои як намоиш

Monetizado як платформаи пулакӣ барои як намоиш аст, ки ба шумо имкон медиҳад, ки ҳама гуна веб саҳифа ва мундариҷаи статикиро (агар шумо барои ворид кардани тағирот ба пуштибонӣ дастрасӣ надошта бошед) тавассути Web3 пул кор кунед.


Шумо метавонед Monetizado-ро дар сайтҳои хабарӣ, шабакаҳои иҷтимоӣ, порталҳои мундариҷаи истисноӣ ва ғайра татбиқ кунед. Шумо инчунин метавонед онро барои ҳавасманд кардани корбарон ба пардохт истифода баред ва таблиғро дар сайтҳои шумо набинед.

Вижагиҳо

Monetizado ба шумо имкон медиҳад, ки:

  • Мундариҷаи ҳифзшударо бо маблағи мушаххасе, ки корбарон бояд барои дастрасӣ пардохт кунанд, муайян кунед.
  • Мундариҷаи ҳифзшудаи эҷодкардаатонро аз назар гузаронед.
  • Ба пайравон / корбарони худ, барои дидани мундариҷаи худ пардохт кунед.
  • Санҷед, ки оё корбар ба мундариҷаи шумо дастрасӣ дорад.
  • Агар лозим бошад, арзиши дастрасӣ ба мундариҷаро тағир диҳед.
  • Муҳофизати мундариҷаро қатъ кунед (агар шумо хоҳед, ки онро барои ҳама барои муддате озод кунед).
  • Маблағи барои мундариҷаи худ ҷамъшударо бозпас гиред.

Истифодаи парванда

Шумо метавонед барои ҳифзи саҳифаҳои пулӣ истифода баред, то онро танҳо муштариён бубинанд, ба мисли:

  • Порталҳои хабарӣ.
  • Видеоҳо.
  • Аудиоҳо.
  • Файлҳо
  • Блогҳо.
  • Шабакаҳои иҷтимоӣ.
  • Ва хеле бештар.

Стеки рушд

Барои сохтани ин платформа мо истифода мебурдем:


  • Мустаҳкамӣ, барои шартномаи оқилона
  • Remix, барои ҷойгир кардани шартномаи интеллектуалӣ
  • Testnet Rootstock , ҳамчун шабака барои лоиҳа
  • Javascript, барои сохтани SDK ва ҳамгироӣ бо вебсайтҳо.


Шартномаи интеллектуалии мо хеле оддӣ аст, ки ба шумо имкон медиҳад, ки номи мундариҷаи пулкоркунӣ, маблағ (бо rBTC) ва якчанд функсияҳоро барои фаъол / ғайрифаъол кардани мундариҷа, пардохт ва қабули пардохтҳо ва ғайра муайян кунед.


MonetizadoLibrary.sol

 // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; library MonetizadoLibrary { struct ProtectedContent { string name; uint256 accessCost; bool isProtected; uint256 sequenceId; address creator; uint256 amountAvailable; uint256 amountCollected; mapping(address => Subscriber) subscribers; } struct Subscriber { bool paid; uint256 amount; } }


Monetizadov1.sol

 // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./MonetizadoLibrary.sol"; contract Monetizadov1 { // Struct with info about the protected content (for paying to access) struct ProtectedContentInfo { string name; uint256 accessCost; bool isProtected; uint256 sequenceId; address creator; uint256 amountAvailable; uint256 amountCollected; } mapping(address => bool) private creators; mapping(address => bool) public hosting; mapping(address => MonetizadoLibrary.ProtectedContent[]) private paginasProtegidas; event GrantedAccess(address usuario, address creator, uint256 sequenceId); address private _owner; uint256 private _platformFeePercentage; uint256 private _platformBalance; modifier onlyOwner() { require(msg.sender == _owner, "Only the owner can call this function"); _; } constructor() { _owner = msg.sender; _platformFeePercentage = 0; _platformBalance = 0; } function addProtectedContent(string memory name, uint256 accessCost) public returns (uint256) { uint256 cantidadPaginasCreador = paginasProtegidas[msg.sender].length; MonetizadoLibrary.ProtectedContent[] storage paginas = paginasProtegidas[msg.sender]; MonetizadoLibrary.ProtectedContent storage pagina = paginas.push(); pagina.name = name; pagina.accessCost = accessCost; pagina.isProtected = true; pagina.sequenceId = cantidadPaginasCreador; pagina.creator = msg.sender; pagina.amountCollected = 0; pagina.amountAvailable = 0; creators[msg.sender] = true; return cantidadPaginasCreador; } function getProtectedContentsForCurrentUser() public view returns (ProtectedContentInfo[] memory) { uint256 cantidadPaginasPorCreador = paginasProtegidas[msg.sender].length; ProtectedContentInfo[] memory paginas = new ProtectedContentInfo[](cantidadPaginasPorCreador); for (uint256 i = 0; i < cantidadPaginasPorCreador; i++) { MonetizadoLibrary.ProtectedContent storage pagina = paginasProtegidas[msg.sender][i]; paginas[i] = ProtectedContentInfo(pagina.name, pagina.accessCost, pagina.isProtected, pagina.sequenceId, pagina.creator, pagina.amountAvailable, pagina.amountCollected); } return paginas; } function getProtectedContentByAddressAndId(address creator, uint256 sequenceId) public view returns (ProtectedContentInfo memory) { MonetizadoLibrary.ProtectedContent storage pagina = paginasProtegidas[creator][sequenceId]; ProtectedContentInfo memory paginas = ProtectedContentInfo(pagina.name, pagina.accessCost, pagina.isProtected, pagina.sequenceId, pagina.creator, pagina.amountAvailable, pagina.amountCollected); return paginas; } function payAccess(address creator, uint256 sequenceId) external payable { MonetizadoLibrary.ProtectedContent storage pagina = paginasProtegidas[creator][sequenceId]; require(msg.value == pagina.accessCost, "Incorrect payment amount"); require(pagina.isProtected == true, "The page is not protected and you do not need to pay access"); MonetizadoLibrary.Subscriber storage subscriber = pagina.subscribers[msg.sender]; subscriber.paid = true; subscriber.amount = msg.value; pagina.amountCollected += msg.value; pagina.amountAvailable += msg.value; emit GrantedAccess(msg.sender, creator, sequenceId); } function currentUserHasAccess(address creator, uint256 sequenceId) public view returns(bool) { MonetizadoLibrary.ProtectedContent storage pagina = paginasProtegidas[creator][sequenceId]; return pagina.subscribers[msg.sender].paid; } function changeAccessCost(uint256 sequenceId, uint256 newCost) external { MonetizadoLibrary.ProtectedContent storage pagina = paginasProtegidas[msg.sender][sequenceId]; pagina.accessCost = newCost; } function unprotectContent(uint256 sequenceId) external { MonetizadoLibrary.ProtectedContent storage pagina = paginasProtegidas[msg.sender][sequenceId]; pagina.isProtected = false; } function protectContent(uint256 sequenceId) external { MonetizadoLibrary.ProtectedContent storage pagina = paginasProtegidas[msg.sender][sequenceId]; pagina.isProtected = true; } function changePlatformFee(uint256 feePlatform) external onlyOwner { require(feePlatform <= 100, "The fee should be between 0.01 to 1% (1 - 100 in a 10000 scale)"); _platformFeePercentage = feePlatform; } function withdrawMoneyFromContent(uint256 sequenceId,uint256 amount) external { MonetizadoLibrary.ProtectedContent storage pagina = paginasProtegidas[msg.sender][sequenceId]; require(pagina.amountAvailable >= amount, "Insufficient balance"); uint256 amountForPlatform = amount * _platformFeePercentage / 10000; _platformBalance += amountForPlatform; payable(_owner).transfer(amountForPlatform); payable(msg.sender).transfer(amount - amountForPlatform); pagina.amountAvailable -= amount; } function getPlatformFee() public view returns(uint256) { return _platformFeePercentage; } function getPlatformBalance() public view returns(uint256) { return _platformBalance; } function withdrawMoneyPlatform(uint256 amount) external onlyOwner { require(_platformBalance >= amount, "Insufficient balance"); payable(msg.sender).transfer(amount); _platformBalance -= amount; } }


Илова бар ин, мо як Javascript SDK эҷод кардем, ки имкон медиҳад, ки шартномаи интеллектуалӣ дар саросари вебсайтҳо, махсусан барои корбароне, ки мехоҳанд барои дастрасӣ ба мундариҷаи мушаххас пардохт кунанд.

Чӣ тавр истифода бурдан

  1. Дар саҳифае, ки шумо мехоҳед пул кор кунед, воридоти Web3.JS ва Ethers.JS. Шумо метавонед онро аз CDN иҷро кунед, масалан:
 <script src="https://cdn.jsdelivr.net/npm/web3@latest/dist/web3.min.js"></script> <script src="https://cdn.ethers.io/lib/ethers-5.2.umd.min.js" type="application/javascript"></script>


  1. Монетизадов1.js-ро зеркашӣ ва ворид кунед
 <script src="./monetizado.js"></script>
  1. Бо истифода аз шартномаи интеллектуалӣ мундариҷаи муҳофизатшударо эҷод кунед ё дар Менеҷер .


  2. Дар сари коди HTMLи саҳифаи худ теги истинод бо атрибути "rel" бо арзиши "monetized" илова кунед ва дар href сохтори зеринро пайгирӣ кунед:


  • шабака: Ин шабакаест, ки дар он мундариҷа ҳифз шудааст.


  • creator_address: Ин суроғаи (0x..) созандаи мундариҷа аст. Агар шумо созанда бошед, он метавонад суроғаи шумо бошад.


  • sequence_id: Ин ID-ест, ки шартнома ҳангоми муайян кардани мундариҷаи нави муҳофизатшуда қатъ шудааст (аз 0 сар мешавад, рақамӣ аст).


Барои намуна:

 <link rel="monetizado" href="rootstock:testnet://0xda3ec0b8bddd2e8bdedede3333fbaf938fcc18c5/0" />


Мисоли қаблӣ маънои онро дорад, ки мундариҷа аз ҷониби эҷодкунанда ҳифз шудааст (бо Id 0), (масалан, 0xda3ec0b8bddd2e8bdedede3333fbaf938fcc18c5) ва ин комбинатсия барои кушодани он пардохт бояд пардохта шавад.


  1. Амволи window.monetizado -ро истифода баред ( дастурҳо дар ин ҷо ).


Гузаронидани лоиҳа

Ин лоиҳа аллакай дар testnet Rootstock ҷойгир шудааст ва шумо метавонед истинодҳои мухталифи зерро, аз ҷумла анборҳо ва намоишро омӯзед:

  1. Дастурҳои шартномаи оқилона: https://github.com/Monetizado/Contracts
  2. Javascript SDK: https://github.com/Monetizado/monetizadojs
  3. Monetizado Proxy SDK (барои имкон додан ба монетизатсияи саҳифаҳои пурра бо истифода аз саҳифаи мобайнӣ барои пардохт ва тафтиш): https://github.com/Monetizado/proxyjs
  4. Менеҷери Monetizado (барои идора кардани мундариҷаи худ, ҷамъоварии пул ва ғайра бидуни ҳамкорӣ бо шартномаи оқилона): https://monetizado.github.io/manager/
  5. Намоиш бо Rootstock: <https://monetizado.github.io/demosmonetizado/demo_rootstock.html ](https://monetizado.github.io/demosmonetizado/demo_rootstock.html)
  6. Намоиши видео:


Мушкилот ва роҳҳои ҳалли

Махсусан барои ин идея, мо дар назди худ вазифа гузоштаем, ки тавонем монетизатсияи платформаҳои Web 2.0-ро бо истифода аз Web3 бидуни таъсири ҷиддӣ ба эҷодкунандаи мундариҷа ва корбар.


Аз ин рӯ, мо маҷбур шудем, ки SDK-ро дар Javascript эҷод кунем, ки имкон медиҳад бо чанд тағирот дар вебсайт пул кор кунем, зеро эҳтимол дорад, ки аксари эҷодкунандагони мундариҷа дар таҳрири вебсайтҳои худ мушкилӣ хоҳанд дошт (ё онҳо платформаҳои берунаро истифода мебаранд, ки фазои зиёд надоранд. таҳрир кардан).


Бо ин ҳалли, мо бояд бубинем, ки чӣ гуна мундариҷаи пулкоркуниро муайян кунем ва дар он ҷо мо аз теги истинод ба HTML истифода бурдем, то ин мундариҷаро муайян кунад ва SDK маблағро дар rBTC муайян мекунад, агар корбар аллакай пардохт карда бошад. ва дастрасӣ дошт, ё бояд пардохт кунад.

Хулоса

Rootstock як имконияти бузургро дар BitcoinFi муаррифӣ мекунад, бо истифода аз қобилиятҳо ва устувории он ҳамчун шабакаи ғайримарказонидашуда. Дар ин замина, барои анҷом додани микропардохтҳо ва пайваст кардани он бо иқтисодиёти эҷод.


Ин мисол, Монетизатсия, соддагии истифодаи Web3-ро дар платформаҳои Web2 нишон медиҳад, ки дар он ҷо барои ҳама намуди корбарон фазои бузург мавҷуд аст ва боиси кам кардани фишор барои ҳамгироии ин технологияҳо мебошад.


L O A D I N G
. . . comments & more!

About Author

Néstor Campos HackerNoon profile picture
Néstor Campos@nescampos
I am a computer engineer and entrepreneur working with Web3 technologies.

ТЕГИ овезон кунед

ИН МАКОЛА ДАР...