Дар иқтисодиёти таваҷҷӯҳ (Web 2.0), корбаронро маҷбур мекунанд, ки барои обуна барои дастрасӣ ба мундариҷаи истисноӣ (ҳама намуди мундариҷа, аз ҷумла мундариҷаи калонсолон) пардохт кунанд, аммо ҳеҷ чиз кафолат намедиҳад, ки шумо бартариҳои пардохткардаатонро ба даст оред, ё аз сабаби он ки мундариҷа офаринанда эҷоди чизҳои навро идома намедиҳад ё шумо бояд ба муддати тӯлонӣ обуна шавед, вақте ки шумо танҳо барои он чизе, ки истеъмол мекунед, пардохт кардан мехоҳед.
Бо вуҷуди ин, Web 3.0, иқтисодиёти ният, ба корбарон имкон медиҳад, ки танҳо барои он чизе, ки истеъмол мекунанд, ба ҷои муддати тӯлонӣ тавассути микропардохтҳо пардохт кунанд. Дар навбати худ, он эҷодкорони мундариҷаро ташвиқ мекунад, ки бо эҷодҳои бештар навсозӣ кунанд ва даромади худро фавран бо хароҷоти хеле кам бидуни вобастагӣ аз шлюзҳои мутамарказ ба даст оранд.
Monetizado як платформаи пулакӣ барои як намоиш аст, ки ба шумо имкон медиҳад, ки ҳама гуна веб саҳифа ва мундариҷаи статикиро (агар шумо барои ворид кардани тағирот ба пуштибонӣ дастрасӣ надошта бошед) тавассути Web3 пул кор кунед.
Шумо метавонед Monetizado-ро дар сайтҳои хабарӣ, шабакаҳои иҷтимоӣ, порталҳои мундариҷаи истисноӣ ва ғайра татбиқ кунед. Шумо инчунин метавонед онро барои ҳавасманд кардани корбарон ба пардохт истифода баред ва таблиғро дар сайтҳои шумо набинед.
Monetizado ба шумо имкон медиҳад, ки:
Шумо метавонед барои ҳифзи саҳифаҳои пулӣ истифода баред, то онро танҳо муштариён бубинанд, ба мисли:
Барои сохтани ин платформа мо истифода мебурдем:
Шартномаи интеллектуалии мо хеле оддӣ аст, ки ба шумо имкон медиҳад, ки номи мундариҷаи пулкоркунӣ, маблағ (бо 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 эҷод кардем, ки имкон медиҳад, ки шартномаи интеллектуалӣ дар саросари вебсайтҳо, махсусан барои корбароне, ки мехоҳанд барои дастрасӣ ба мундариҷаи мушаххас пардохт кунанд.
<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>
<script src="./monetizado.js"></script>
Дар сари коди HTMLи саҳифаи худ теги истинод бо атрибути "rel" бо арзиши "monetized" илова кунед ва дар href сохтори зеринро пайгирӣ кунед:
Барои намуна:
<link rel="monetizado" href="rootstock:testnet://0xda3ec0b8bddd2e8bdedede3333fbaf938fcc18c5/0" />
Мисоли қаблӣ маънои онро дорад, ки мундариҷа аз ҷониби эҷодкунанда ҳифз шудааст (бо Id 0), (масалан, 0xda3ec0b8bddd2e8bdedede3333fbaf938fcc18c5) ва ин комбинатсия барои кушодани он пардохт бояд пардохта шавад.
Ин лоиҳа аллакай дар testnet Rootstock ҷойгир шудааст ва шумо метавонед истинодҳои мухталифи зерро, аз ҷумла анборҳо ва намоишро омӯзед:
Махсусан барои ин идея, мо дар назди худ вазифа гузоштаем, ки тавонем монетизатсияи платформаҳои Web 2.0-ро бо истифода аз Web3 бидуни таъсири ҷиддӣ ба эҷодкунандаи мундариҷа ва корбар.
Аз ин рӯ, мо маҷбур шудем, ки SDK-ро дар Javascript эҷод кунем, ки имкон медиҳад бо чанд тағирот дар вебсайт пул кор кунем, зеро эҳтимол дорад, ки аксари эҷодкунандагони мундариҷа дар таҳрири вебсайтҳои худ мушкилӣ хоҳанд дошт (ё онҳо платформаҳои берунаро истифода мебаранд, ки фазои зиёд надоранд. таҳрир кардан).
Бо ин ҳалли, мо бояд бубинем, ки чӣ гуна мундариҷаи пулкоркуниро муайян кунем ва дар он ҷо мо аз теги истинод ба HTML истифода бурдем, то ин мундариҷаро муайян кунад ва SDK маблағро дар rBTC муайян мекунад, агар корбар аллакай пардохт карда бошад. ва дастрасӣ дошт, ё бояд пардохт кунад.
Rootstock як имконияти бузургро дар BitcoinFi муаррифӣ мекунад, бо истифода аз қобилиятҳо ва устувории он ҳамчун шабакаи ғайримарказонидашуда. Дар ин замина, барои анҷом додани микропардохтҳо ва пайваст кардани он бо иқтисодиёти эҷод.
Ин мисол, Монетизатсия, соддагии истифодаи Web3-ро дар платформаҳои Web2 нишон медиҳад, ки дар он ҷо барои ҳама намуди корбарон фазои бузург мавҷуд аст ва боиси кам кардани фишор барои ҳамгироии ин технологияҳо мебошад.