Activos disponibles.
Publicar anuncio.
CÓMO FUNCIONA LA VENTA
- 1Conecta tu MetaMask y publica tu activo con precio en ETH.
- 2Un comprador interesado inicia la transacción y el ETH queda bloqueado en escrow.
- 3Entregas el activo al comprador — accesos, código, dominios, etc.
- 4El comprador confirma la recepción y el ETH se libera a tu wallet automáticamente.
- 5Si hay disputa, un árbitro neutral resuelve el caso.
🔒 ESCROW AUTOMÁTICO
El contrato inteligente actúa como intermediario neutral. El ETH del comprador queda bloqueado hasta que ambas partes confirman la transacción. Nadie puede mover los fondos unilateralmente.
01
CONECTA METAMASK
Instala MetaMask en tu navegador y conecta tu wallet. Sin registro, sin contraseña, sin datos personales.
02
PUBLICA O COMPRA
Publica tu activo o encuentra uno que te interese. El precio se fija en ETH para transparencia total.
03
ESCROW AUTOMÁTICO
El ETH queda bloqueado en el contrato inteligente. Nadie puede moverlo hasta que ambas partes confirmen.
04
CONFIRMAR Y LIBERAR
Vendedor entrega el activo. Comprador confirma recepción. El ETH se libera automáticamente.
05
ARBITRAJE
Si hay disputa, un árbitro neutral revisa el caso y decide la distribución de fondos.
06
100% LEGAL
Equivale a un contrato de depósito legal. Trazabilidad total en la blockchain de Ethereum.
Contrato Inteligente Solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
/**
* MINOTAURO VOLAPÜK ESCROW CONTRACT
* Nautilus AI · nautilus-ai.es
* Escrow automático con arbitraje
*/
contract MinotauroEscrow {
enum State { PENDING, ACTIVE, COMPLETED, DISPUTED, REFUNDED }
struct Trade {
address seller;
address buyer;
uint256 amount;
State state;
string description;
bool sellerConfirmed;
bool buyerConfirmed;
}
mapping(uint256 => Trade) public trades;
uint256 public tradeCount;
address public arbiter;
uint256 public constant FEE = 1; // 1%
event TradeCreated(uint256 id, address seller, uint256 amount);
event TradeFunded(uint256 id, address buyer);
event TradeCompleted(uint256 id);
event TradeDisputed(uint256 id);
function createTrade(string memory desc, uint256 price) external returns (uint256) {
tradeCount++;
trades[tradeCount] = Trade(msg.sender, address(0), price, State.PENDING, desc, false, false);
emit TradeCreated(tradeCount, msg.sender, price);
return tradeCount;
}
function fundTrade(uint256 id) external payable {
Trade storage t = trades[id];
require(t.state == State.PENDING && msg.value == t.amount);
t.buyer = msg.sender;
t.state = State.ACTIVE;
emit TradeFunded(id, msg.sender);
}
function confirmDelivery(uint256 id) external {
Trade storage t = trades[id];
require(t.state == State.ACTIVE);
if(msg.sender == t.seller) t.sellerConfirmed = true;
if(msg.sender == t.buyer) t.buyerConfirmed = true;
if(t.sellerConfirmed && t.buyerConfirmed) {
t.state = State.COMPLETED;
uint256 fee = t.amount * FEE / 100;
payable(t.seller).transfer(t.amount - fee);
emit TradeCompleted(id);
}
}
function openDispute(uint256 id) external {
Trade storage t = trades[id];
require(msg.sender == t.buyer || msg.sender == t.seller);
t.state = State.DISPUTED;
emit TradeDisputed(id);
}
}