paint-brush
Nola eraiki Katean Ordainketa Protokoloa Rootstock-enarabera@nescampos
157 irakurketak

Nola eraiki Katean Ordainketa Protokoloa Rootstock-en

arabera Néstor Campos9m2024/11/30
Read on Terminal Reader

Luzeegia; Irakurri

Monetizado katean ordaintzeko protokoloa da. Web3.0 bidez edozein web orrialde eta eduki estatiko dirua irabazteko aukera ematen du. Orriak babesteko erabil daiteke, harpidedunek bakarrik ikus dezaten.
featured image - Nola eraiki Katean Ordainketa Protokoloa Rootstock-en
Néstor Campos HackerNoon profile picture

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, Katean Ordainketa Protokoloa

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.

Ezaugarriak

Monetizatzeak aukera ematen dizu:

  • Zehaztu babestutako edukia erabiltzaileek atzitzeko ordaindu behar duten kopuru zehatz batekin.
  • Berrikusi sortu duzun eduki babestua.
  • Zure jarraitzaile/erabiltzaileei, ordaindu zure edukia ikusteko.
  • Egiaztatu erabiltzaile batek zure edukirako sarbidea duen.
  • Beharrezkoa bada, aldatu edukirako sarbidearen kostua.
  • Kendu edukiari babesa (denbora baterako denei kaleratu nahi baduzu).
  • Atera zure edukiagatik bildutako dirua.

Erabilera kasua

Dirua irabazteko aukera erabil dezakezu orriak babesteko, harpidedunek soilik ikus ditzaten, honela:

  • Albisteen atariak.
  • Bideoak.
  • Audioak.
  • Fitxategiak
  • Blogak.
  • Sare sozialak.
  • Eta askoz gehiago.

Garapen pila

Plataforma hau eraikitzeko, erabili dugu:


  • Sendotasuna, kontratu adimendunarentzat
  • Remix, kontratu adimenduna zabaltzeko
  • Rootstock testnet , proiektuaren sare gisa
  • Javascript, SDK bat sortzeko eta webguneekin integratzeko.


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.

Nola erabili

  1. Dirua irabazi nahi duzun orrian, inportatu Web3.JS eta Ethers.JS. CDNtik egin dezakezu, adibidez:
 <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. Deskargatu eta inportatu monetizadov1.js
 <script src="./monetizado.js"></script>
  1. Sortu babestutako edukia kontratu adimenduna erabiliz edo -n Kudeatzailea .


  2. Gehitu esteka etiketa zure orriaren HTML kodearen buruan, "rel" atributuarekin "monetized" balioarekin eta href-n honako egitura hau jarraitzen du:


  • sarea: edukia babestu den sarea da.


  • sortzailea_helbidea: Eduki sortzailearen helbidea (0x..) da. Zure helbidea izan daiteke sortzailea bazara.


  • sequence_id: babestutako eduki berria zehaztu zenuenean kontratua amaitu zen IDa da (0tik aurrera hasten da, zenbakizkoa da).


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.


  1. Erabili window.monetizado propietatea ( argibideak hemen ).


Proiektuaren ibilbidea

Proiektu hau jada Rootstock testnet-en zabalduta dago, eta beheko esteka desberdinak arakatu ditzakezu, biltegiak eta demo bat barne:

  1. Kontratu adimendunen argibideak: https://github.com/Monetizado/Contracts
  2. Javascript SDK: https://github.com/Monetizado/monetizadojs
  3. Monetizado Proxy SDK (ordaintzeko eta egiaztatzeko tarteko orri bat erabiliz orrialde osoak dirua irabazteko aukera emateko): https://github.com/Monetizado/proxyjs
  4. Monetizado Manager (zure edukia kudeatzeko, dirua biltzeko eta gehiago kontratu adimendunarekin elkarreragin gabe): https://monetizado.github.io/manager/
  5. Demostrazioa Rootstock-ekin: <https://monetizado.github.io/demosmonetizado/demo_rootstock.html ](https://monetizado.github.io/demosmonetizado/demo_rootstock.html)
  6. Bideo demoa:


Erronkak eta Irtenbideak

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.

Ondorioa

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.