Arreta ekonomian (Web 2.0), erabiltzaileak "bultzatuta" daude harpidetzak ordaintzera eduki esklusiboak atzitzeko (mota guztietako edukiak, helduentzako edukiak barne), baina ezerk ez du ziurtatzen ordaintzen ari zaren onurak jasoko dituzula, ezta edukia delako. sortzaileak ez du gauza berriak sortzen jarraitzen edo kontsumitzen duzunagatik bakarrik ordaindu nahi duzun epe luzeetarako harpidetza egin behar duzu.
Hala ere, Web 3.0, intentzio-ekonomiak, erabiltzaileek kontsumitzen dutenagatik bakarrik ordaintzeko aukera dakar, epe luzez egin beharrean, mikroordainketen bidez. Era berean, eduki-sortzaileak sorkuntza gehiagorekin eguneratuta egoteko bultzatzen ditu, diru-sarrerak berehala jasoz, kostu oso baxuekin, atebide zentralizatuen menpe egon gabe.
Monetizado kate bidezko ordainpeko plataforma bat da, Web3-ren bidez edozein web orrialde eta eduki estatiko dirua irabazteko aukera ematen duena (aldaketak egiteko backenderako sarbidea ez baduzu).
Monetizado ezar dezakezu albiste-guneetan, sare sozialetan, eduki-atari esklusiboetan eta abar. Erabiltzaileak ordaintzeko eta zure webguneetan publizitaterik ez ikusteko ere erabil dezakezu.
Monetizatzeak aukera ematen dizu:
Dirua irabazteko aukera erabil dezakezu orriak babesteko, harpidedunek soilik ikus ditzaten, honela:
Plataforma hau eraikitzeko, erabili dugu:
Gure kontratu adimenduna nahiko oinarrizkoa da, dirua irabazteko edukiaren izena, zenbateko bat (rBTCtan) eta edukia gaitzeko/desgaitzeko eta ordainketak ordaintzeko eta jasotzeko hainbat funtzio zehazteko aukera ematen dizu, besteak beste.
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; } }
Gainera, Javascript SDK bat sortu dugu, kontratu adimenduna webgune guztietan erabiltzeko aukera ematen duena, batez ere eduki zehatzetara sartzeko ordaindu nahi duten erabiltzaileentzat.
<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>
Gehitu esteka etiketa zure orriaren HTML kodearen buruan, "rel" atributuarekin "monetized" balioarekin eta href-n honako egitura hau jarraitzen du:
Adibidez:
<link rel="monetizado" href="rootstock:testnet://0xda3ec0b8bddd2e8bdedede3333fbaf938fcc18c5/0" />
Aurreko adibideak esan nahi du edukia babestuta dagoela (0 Id. bidez), sortzaileak (0xda3ec0b8bddd2e8bdedede3333fbaf938fcc18c5 adibidez), eta konbinazio hori desblokeatzeko ordainketa egin behar dela.
Proiektu hau jada Rootstock testnet-en zabalduta dago, eta beheko esteka desberdinak arakatu ditzakezu, biltegiak eta demo bat barne:
Ideia honetarako zehazki, Web3 erabiliz Web 2.0 plataformak dirua irabazteko aukera izatearen erronka jarri genion, edukien sortzailean zein erabiltzailearengan eragin handirik gabe.
Hori dela eta, webgunean aldaketa gutxirekin edukiak dirua irabazteko aukera emango zuen SDK sortu behar izan genuen Javascript-en, izan ere, oso litekeena da eduki sortzaile gehienek zailtasunak izatea euren webguneak editatzeko (edo leku handirik ez duten kanpoko plataformak erabiltzen dituzte). editatzeko).
Irtenbide horrekin, orduan dirua irabazten ari zen edukia nola identifikatu ikusi behar genuen, eta hor HTML esteka etiketa aprobetxatu genuen eduki hori zehazteko, eta SDK-k rBTCn detektatuko zuen zenbatekoa, erabiltzaileak dagoeneko ordaindu izan balu. eta sarbidea izan, edo ordaindu behar izan.
Rootstock-ek aukera izugarria adierazten du BitcoinFi-n, sare deszentralizatu gisa dituen gaitasunak eta sendotasuna aprobetxatuz. Testuinguru horretan, mikroordainketak egin eta sorkuntza ekonomiarekin lotzeko.
Adibide honek, Monetized, Web3 Web2 plataformetan erabiltzearen sinpletasuna erakusten du, non erabiltzaile mota guztientzako espazio handia dagoen, teknologia hauek integratzeko marruskadura murriztuz.