Creación de un contrato inteligente para pagos de suscripción en Ethereum Solidity
Solidity es el lenguaje de programación para escribir contratos inteligentes en la cadena de bloques de Ethereum. Con su sintaxis simple y su diseño orientado a objetos, puede crear contratos robustos y autoejecutables que se ejecutan exactamente como se programaron. En este artículo, aprenderá cómo crear un contrato inteligente para pagos de suscripción en Solidity.
Configuración de la estructura del contrato
Para comenzar, debe crear un archivo de contrato utilizando un compilador de Solidity. Esta será la base de su sistema de pago de suscripción. Comience por definir el contrato y sus variables:
pragma solidity >=0.7.0 <0.8.0;
contract SubscriptionPayment {
uint256 public price;
uint256 public frequency;
mapping (address => uint256) public balances;
address public owner;
constructor() public {
owner = msg.sender;
price = 1 ether;
frequency = 30 days;
}
}
Pruébalo en remezclar
En este código, declaras un contrato llamado SubscriptionPayment
. El contrato tiene cuatro variables públicas: price
, frequency
, balances
y owner
. El price
variable especifica el costo de la suscripción en wei, y el frequency
La variable especifica el tiempo entre pagos. El balances
el mapeo almacena el saldo de cada suscriptor, y el owner
variable almacena la dirección del creador del contrato.
Aceptar pagos de suscripción
A continuación, debe escribir una función que acepte pagos de suscriptores. Para ello, utilizará el payable
palabra clave, que permite que el contrato reciba ether.
function subscribe() public payable {
require(msg.value == price, "Incorrect payment amount");
balances[msg.sender] += msg.value;
}
Pruébalo en remezclar
El subscribe()
La función verifica que el monto del pago coincida con el precio especificado en el price
variable. Si el pago es correcto, la función agrega el pago al saldo del suscriptor.
Automatización de pagos de suscripción
Ahora que tiene una forma de aceptar pagos, necesita automatizar el proceso de pago. Para ello, utilizará el schedule
función, que ejecuta una función en un intervalo de tiempo específico.
function schedulePayment() public {
require(msg.sender == owner, "Only the owner can schedule payments");
require(now + frequency <= block.timestamp, "Payments already scheduled");
schedule(frequency, this, "paySubscriber");
}
function paySubscriber() public {
for (address subscriber : balances) {
require(subscriber.send(price), "Payment failed");
}
}
Pruébalo en remezclar
El schedulePayment()
función comprueba que la persona que llama a la función es el propietario y que no se han programado pagos ya. Si estas comprobaciones pasan, la función programa la paySubscriber()
función para ejecutar cada frequency
días. El paySubscriber()
La función itera sobre todos los suscriptores y les envía el price
en éter
Reembolso de pagos
Finalmente, necesita una forma para que los suscriptores obtengan un reembolso si cancelan su suscripción. Para ello, escribirás un refund()
función.
function refund() public {
require(balances[msg.sender] > 0, "No balance to refund
Pruébalo en remezclar
Recursos
Redes de cadena de bloques
A continuación se muestra una lista de redes de cadena de bloques Mainnet y Testnet compatibles con EVM. Cada enlace contiene la configuración de la red, enlaces a varios grifos para probar ETH y tokens, detalles del puente y recursos técnicos para cada cadena de bloques. Básicamente todo lo que necesita para probar e implementar contratos inteligentes o aplicaciones descentralizadas en cada cadena. Para obtener una lista de foros populares de Ethereum y aplicaciones de chat, haga clic aquí.
cryptoshitcompra.com/wp-content/uploads/2021/08/Grupo-de-criptomercados-bot-de-liquidacion-dYdX.png» alt=»»/> | Ethereum prueba la configuración de la red y prueba la información del grifo ETH |
png» alt=»»/> | Configuración optimista de Ethereum Mainnet y Testnet, detalles del puente, etc. |
Configuración de red de polígono Mainnet y Testnet, grifos para prueba de tokens MATIC, detalles de puente, etc. | |
Configuración de Binance Smart Chain Mainnet y Testnet, faucets para tokens BNB de prueba, detalles del puente, etc. | |
Fanton networt Configuración de Mainnet y Testnet, faucets para tokens FTM de prueba, detalles del puente, etc. | |
Configuración de Kucoin Chain Mainnet y Testnet, faucets para tokens KCS de prueba, detalles del puente, etc. |
Bibliotecas de software Web3
Puede usar las siguientes bibliotecas para interactuar con una cadena de bloques compatible con EVM.
Si quiere puede hacernos una donación por el trabajo que hacemos, lo apreciaremos mucho.
Direcciones de Billetera:
- BTC: 14xsuQRtT3Abek4zgDWZxJXs9VRdwxyPUS
- USDT: TQmV9FyrcpeaZMro3M1yeEHnNjv7xKZDNe
- BNB: 0x2fdb9034507b6d505d351a6f59d877040d0edb0f
- DOGE: D5SZesmFQGYVkE5trYYLF8hNPBgXgYcmrx
También puede seguirnos en nuestras Redes sociales para mantenerse al tanto de los últimos post de la web:
- Telegram
Disclaimer: En Cryptoshitcompra.com no nos hacemos responsables de ninguna inversión de ningún visitante, nosotros simplemente damos información sobre Tokens, juegos NFT y criptomonedas, no recomendamos inversiones