La ruptura de una patente única en "acciones" NFT negociables convierte a una propiedad intelectual compleja en un activo líquido que puede ser comprado, vendido y gestionado por sus partes interesadas. Al crear tokens únicos que cada uno representa una pequeña parte de una invención, los inventores pueden obtener financiación inmediata sin dar control a un backer. Estos tokens incluyen metadatos como hashes de reclamación, identificadores descentralizados del inventor y bloques de caducidad, que muestran claramente el origen y los detalles de la patente. De esta manera, los inventores pueden llegar a un grupo global de pequeños inversores que están motivados para evaluar, mejorar y apoyar la innovación desde el principio.
La revisión de la multitud utilizando la gobernanza basada en token es muy diferente del modelo de examinador cerrado tradicional de la Oficina de Patentes y Marcas de los Estados Unidos. En lugar de que algunos examinadores revisen las solicitudes en privado durante varios años, las NFT de patentes fraccionales permiten a una comunidad descentralizada apostar por tokens, examinar el arte anterior, presentar rebates y votar sobre la patentabilidad dentro de un período de revisión establecido. Las puntuaciones de reputación y los umbrales de quórum reemplazan las asignaciones de examinadores fijas, permitiendo un consenso rápido o resaltando áreas de desacuerdo a través de transacciones transparentes en cadena. Este proceso abierto no solo acelera la evaluación técnica sino también alinea los incentivos de los revisores con el éxito de la in
Tokenize una revelación de la invención
Crear una divulgación de la invención como una NFT de patente fraccional comienza codificando las partes principales de su solicitud de patente, incluyendo sus reclamaciones, detalles del inventor y el plazo de revisión, en metadatos en cadena. Al usar un contrato ERC-1155, cada "parte" de patente se muestra como un saldo fungible de un ID de token único.
Explicación del concepto
En este modelo, se crea un nuevo ID de token para cada divulgación de la invención. Cada ID de token incluye una estructura que registra el hash criptográfico del lenguaje de reclamación de la patente, el identificador descentralizado del inventor (DID), y un número de bloque de caducidad, después de lo cual no pueden comenzar nuevas rondas de revisión. Los inversores compran saldos de token para financiar la invención y ganar recompensas por participar en revisión de pares. Dado que todos los datos, incluyendo la procedencia de IP y los límites de tiempo, se almacenan en cadena, ninguna parte centralizada puede alterar los detalles de la divulgación o restringir el acceso al proceso de revisión.
Introducción a la sintaxis con desintegración y explicación
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
contract FractionalPatent is ERC1155, Ownable {
struct Patent {
bytes32 claimHash;
string inventorDID;
uint256 expiryBlock;
}
mapping(uint256 => Patent) public patents;
uint256 private nextId = 1;
constructor(string memory uri_) ERC1155(uri_) {}
function mintDisclosure(
bytes32 claimHash,
string calldata inventorDID,
uint256 expiryBlock,
uint256 totalShares
) external onlyOwner returns (uint256 tokenId) {
tokenId = nextId++;
patents[tokenId] = Patent(claimHash, inventorDID, expiryBlock);
_mint(msg.sender, tokenId, totalShares, "");
}
}
En este fragmento, elmintDisclosure
La función tiene cuatro entradas.claimHash
es el keccak256 hash del texto de la reclamación de la patente.inventorDID
es un identificador único, como DID:example:1234, que conecta los registros en cadena al inventor.expiryBlock
establece un número de bloque después del cual los contratos de revisión no pueden utilizar esta divulgación.totalShares
Decide cuántos tokens fraccionales crear para ese ID.patents[tokenId]
conservar la información inalterable para su uso futuro.
Explica los campos de metadatos
Every Patent
Estrategias de mantenimiento:
- claimHash: Un hash de bytes32 keccak256 garantiza que el registro en cadena coincida con el lenguaje de afirmación fuera de la cadena sin exponer el texto completo.
- inventorDID: Un apunte a la identidad descentralizada del inventor, permitiendo la atribución sin confianza.
- expiryBlock: Un número de bloque de Ethereum de estilo Unix más allá del cual la divulgación se considera cerrada para nuevas rondas de revisión.
Demostración con ejemplo
Imagine Alice ha redactado una solicitud provisional y quiere fraccionarla en un millón de acciones.
const claimText = "A modular solar array with adaptive orientation…";
const claimHash = ethers.utils.keccak256(ethers.utils.toUtf8Bytes(claimText));
Suponiendo que se despliegaFractionalPatent
y obtiene su dirección, entonces llama:
await patentContract.mintDisclosure(
claimHash,
"did:example:alice123",
18_200_000, // expiryBlock ~ Ethereum block in six months
1_000_000 // total shares
);
Esta transacción crea el token ID 1, registra los metadatos de Alice, y miente 1.000.000 acciones a su cartera.Estas acciones ahora pueden ser transferidas a los patrocinadores, listadas en los mercados, o mantenidas en un tesoro DAO para financiar el desarrollo, todo manteniendo un registro en cadena seguro y seguro de los detalles esenciales de la invención.
Lanzar una ronda de revisión de la multitud
En un sistema de patente fraccional, comenzando una ronda de revisión de la multitud, los titulares de token se involucran como revisores activos. Bloquean una participación, revisan la divulgación y ganan recompensas por encontrar arte anterior relevante o apoyar la singularidad de la patente. Este proceso de revisión se gestiona en cadena por un contrato inteligente que se vincula al ID de token de la divulgación y establece las reglas para la huelga, los plazos de rechazo y los multiplicadores de recompensa para alentar revisiones rápidas y exhaustivas.
Explicación del concepto
Cuando comienza una ronda de revisión, el contrato de revisión verifica el expiryBlock de la divulgación para asegurarse de que los plazos están antes de ese bloque. Los titulares de token que desean unirse deben transferir una cantidad fija de acciones de patente al contrato de revisión. Al apostar, los revisores muestran que creen en sus hallazgos: si encuentran un arte previo válido que refuta la reclamación, obtienen una recompensa mayor; si no pueden apoyar su desafío, pierden su apuesta. Cuando finaliza el período de rechazo, el contrato cuenta automáticamente las apuestas y otorga recompensas a los desafiantes exitosos y defensores honestos basados en un sistema de pago claro.
Sintaxis de contratos con desintegración y explicación
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC1155/IERC1155.sol";
contract CrowdReview {
struct Round {
uint256 tokenId;
uint256 stakingAmount;
uint256 rebuttalEndBlock;
uint8 rewardMultiplier; // e.g., 150 for 1.5× payout
bool settled;
}
mapping(uint256 => Round) public rounds;
IERC1155 public patentToken;
constructor(address tokenAddress) {
patentToken = IERC1155(tokenAddress);
}
function startReview(
uint256 roundId,
uint256 tokenId,
uint256 stakingAmount,
uint256 rebuttalWindow,
uint8 rewardMultiplier
) external {
uint256 current = block.number;
rounds[roundId] = Round({
tokenId: tokenId,
stakingAmount: stakingAmount,
rebuttalEndBlock: current + rebuttalWindow,
rewardMultiplier: rewardMultiplier,
settled: false
});
}
function stakeAndSubmit(uint256 roundId, bool challengesClaim) external {
Round storage r = rounds[roundId];
require(block.number < r.rebuttalEndBlock, "Review closed");
patentToken.safeTransferFrom(msg.sender, address(this), r.tokenId, r.stakingAmount, "");
// Record submission choice—challenge or defend
}
function settleRound(uint256 roundId) external {
Round storage r = rounds[roundId];
require(block.number >= r.rebuttalEndBlock && !r.settled, "Cannot settle");
// Pseudocode: determine winners, calculate payouts
// payout = stakingAmount * rewardMultiplier / 100
r.settled = true;
}
}
Aquí es,startReview
crea una nueva ronda especificando la revelacióntokenId
El mínimostakingAmount
de las acciones necesarias por participante, arebuttalWindow
En los bloques, y arewardMultiplier
que aumenta los pagos para los desafíos válidos.stakeAndSubmit
La función bloquea los tokens y registra si el revisor está desafiando o defendiendo la reclamación.settleRound
Puede ser llamado una vez que se haya terminado la ventana de rechazo; calcula las recompensas, redistribuye las apuestas y marca la ronda como resuelta.
Explica las banderas
Cada ronda de revisión se basa en tres banderas económicas. El importe de apuesta especifica cuántos tokens de patentes deben ser bloqueados para participar, desalentando las presentaciones innecesarias. La ventana de rechazo, medida en bloques de Ethereum, establece un plazo estricto para los desafíos y contraargumentos, asegurando que el proceso finalice rápidamente. El multiplicador de recompensas determina la proporción entre el pago total para los desafiantes o defensores exitosos y su apuesta original, proporcionando un fuerte incentivo para descubrir un arte previo importante o presentar una defensa sólida.
Revisión de la demostración de flujo de trabajo con ejemplo
Supongamos que la patente fraccional de Alice (Token ID 1) acaba de ser creada y está fijada para expirar en el bloque 18.200.000.
await reviewContract.startReview(
42, // arbitrary round ID
1, // tokenId referencing Alice’s disclosure
100, // stakingAmount: 100 shares per reviewer
5000, // rebuttalWindow: ~5000 blocks (~19 hours)
150 // rewardMultiplier: 1.5× payout for winners
);
En el bloque 18,195,000, Bob y Carol cada usostakeAndSubmit(42, true)
Bob envía un enlace a un artículo de pre-arte que muestra la tecnología que se sobrepone, mientras que Carol, confiada en su novedad, utilizastakeAndSubmit(42, false)
Para defenderlo, ambos bloquean 100 acciones en el contrato.
Una vez que el bloque 18.200.000 es alcanzado, cualquiera puede llamarsettleRound(42)
El contrato verifica la cita previa de Bob a través de un oráculo fuera de la cadena o una revisión manual. Luego, la lógica en cadena (o un oráculo de gobernanza) confirma que el desafío de Bob es válido. Bob recibe 150 acciones de vuelta (su participación de 100 acciones más una recompensa de 50 acciones), Carol pierde su participación, y el propietario de la patente recupera las 100 acciones de Carol para un pool de recompensas para rondas futuras.
Licencia y monetización de patentes fraccionales NFTs
Una vez que una divulgación pasa por la revisión de los pares, los titulares de tokens pueden convertir sus acciones fraccionales en ingresos continuos mediante la incorporación de dividendos de licencias y términos de licencia directamente en contratos inteligentes. En lugar de negociar acuerdos de licencia de una sola vez, los inventores e inversores utilizan un protocolo transparente en cadena que transmite automáticamente pagos a los titulares de tokens en base a términos previamente acordados e incluye mecanismos de retroalimentación si los licenciatarios no lo hacen.
Explicación del concepto
En esta configuración, un contrato de licencia utiliza el ID de token de patente y establece un plan de pago, como un porcentaje de ventas futuras o una tarifa fija por uso, que se envía a los accionistas regularmente. Los licenciados colocan dinero en el contrato, que luego lo comparte con todos los titulares de token actuales. Si un licenciado no paga, una opción de retroalimentación puede detener los pagos futuros hasta que el problema se fije, o puede iniciar una votación para cancelar la licencia.
Sintaxis de Royalty Split con desintegración y explicación
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC1155/IERC1155.sol";
import "@openzeppelin/contracts/security/ReentrancyGuard.sol";
contract PatentLicensing is ReentrancyGuard {
IERC1155 public patentToken;
struct License {
uint256 tokenId;
uint256 ratePerSecond; // Wei streamed per share per second
uint256 lastUpdate; // Timestamp of last distribution
bool clawbackEnabled; // Pauses streaming on default
}
mapping(address => License) public licenses;
constructor(address _token) {
patentToken = IERC1155(_token);
}
function createLicense(
address licensee,
uint256 tokenId,
uint256 ratePerSecond,
bool clawbackEnabled
) external {
licenses[licensee] = License({
tokenId: tokenId,
ratePerSecond: ratePerSecond,
lastUpdate: block.timestamp,
clawbackEnabled: clawbackEnabled
});
}
function streamPayments(address licensee) external nonReentrant {
License storage lic = licenses[licensee];
uint256 elapsed = block.timestamp - lic.lastUpdate;
uint256 totalShares = patentToken.balanceOf(address(this), lic.tokenId);
uint256 payout = elapsed * lic.ratePerSecond * totalShares;
lic.lastUpdate = block.timestamp;
payable(licensee).transfer(payout);
}
function triggerClawback(address licensee) external {
licenses[licensee].clawbackEnabled = true;
}
}
Here, ratePerSecond
Define una curva de pago lineal, medida en Wei por acción por segundo, permitiendo que los ingresos se acumulen continuamente en lugar de en cantidades fijas.streamPayments
La función calcula el tiempo transcurrido desde la última actualización, la multiplica por el número de acciones mantenidas en escrow, y transfiere la cantidad correcta a los titulares de token.clawbackEnabled
La bandera permite a la administración interrumpir la transmisión si el licenciado viola los términos.
Demostración de acuerdo de licencia con ejemplo
Supongamos que una compañía de software, BetaSoft, decide licenciar la patente de orientación solar de Alice (Token ID 1). Ponen 10 ETH en el contrato de licencia y establecen una tasa de 1 gwei por acción por segundo. Con un millón de acciones, esto significa alrededor de 0.0864 ETH en ingresos totales por día. Cada 24 horas, el contrato de Alice puede usarstreamPayments(BetaSoft)
para distribuir alrededor de 0.0864 ETH a todos los titulares de token basados en sus acciones. Si BetaSoft no realiza un pago a tiempo, el DAO puede usartriggerClawback(BetaSoft)
Poner en pausa los pagos hasta que añaden más fondos.
Configurar mejoras de gobernanza
Con el tiempo, los titulares de token pueden desear ajustar los parámetros de licencia, como cambiar las tasas, agregar nuevas condiciones de clawback o incluir licencias secundarias.Una función de actualización de gobernanza permite proponer, votar y implementar estos cambios sin tener que redistribuir los contratos principales.
Explicación del concepto
Las actualizaciones comienzan con propuestas en cadena que incluyen la dirección del contrato, el selector de la función y nuevos valores de parámetros. Cada propuesta tiene un retraso de tiempo, dando a los titulares de tokens tiempo para revisar los cambios.
Actualización de la sintaxis de la propuesta con descomposición y explicación
pragma solidity ^0.8.0;
contract Governance {
struct Proposal {
address target;
bytes data; // Encoded function call
uint256 eta; // Execution timestamp (after timelock)
bool executed;
}
uint256 public timelockDelay = 2 days;
mapping(uint256 => Proposal) public proposals;
uint256 private nextProposalId;
function proposeUpgrade(
address target,
bytes calldata data
) external returns (uint256 proposalId) {
proposalId = nextProposalId++;
proposals[proposalId] = Proposal({
target: target,
data: data,
eta: block.timestamp + timelockDelay,
executed: false
});
}
function executeUpgrade(uint256 proposalId) external {
Proposal storage p = proposals[proposalId];
require(block.timestamp >= p.eta, "Timelock not expired");
require(!p.executed, "Already executed");
(bool success, ) = p.target.call(p.data);
require(success, "Upgrade failed");
p.executed = true;
}
}
En este marco de gobierno,proposeUpgrade
envuelve el contrato de destino y los datos de la función codificados, luego establece uneta
Los grandes actores pueden ser asignados privilegios de veto fuera de la cadena o a través de un oráculo de reputación, mientras que los pesos delegados ajustan la influencia de cada voto de acuerdo con las puntuaciones de reputación de los actores.
Actualización de la votación con ejemplo
Imagínese que los titulares de token decidan aumentar los beneficios de BetaSoftratePerSecond
de 1 gwei a 2 gwei. El multisig del DAO llama:
const data = licensingContract.interface.encodeFunctionData(
"createLicense",
[betaSoftAddress, 1, ethers.utils.parseUnits("2", "gwei"), false]
);
await governanceContract.proposeUpgrade(licensingContract.address, data);
Después del período de dos días, cualquier miembro invoca:
await governanceContract.executeUpgrade(proposalId);
En ese momento, la tasa de streaming de BetaSoft se duplica, y todos los titulares de token inmediatamente comienzan a ganar el doble de los ingresos por segundo, todo sin tener que mover fondos o redistribuir el contrato de licencia.
Pensamientos finales
Los NFT de patentes fraccionales convierten la propiedad intelectual en un activo vibrante y centrado en la comunidad. Al tokenizar una invención, puede recaudar dinero rápidamente, obtener revisiones rápidas de pares y automatizar la concesión de licencias y el reparto de ingresos. Las rondas de revisión de la multitud utilizan la apuesta para encontrar arte previo o hacer que las reclamaciones de patentes sean más fuertes, mientras que los módulos de gobernanza permiten a los titulares de tokens decidir sobre las actualizaciones y los términos de licencia.
¿Los tribunales y las oficinas de patentes aceptarán las hashes en cadena y las pistas de auditoría basadas en tokens como prueba? ¿Cómo puede el sistema detener el “spam pre-art” y los conflictos de intereses entre los titulares de tokens?
Para aquellos interesados, la Organización Mundial de la Propiedad Intelectual (OMPI) ofrece investigación sobre exámenes rápidos de patentes y estándares de evidencia digital. bibliotecas de código abierto como el ERC-1155 de OpenZeppelin y plataformas como Kleros ofrecen herramientas. ensayos tempranos por IPwe y el Protocolo de base están probando registros de patentes en cadena y activos IP tokenizados. Estos esfuerzos apuntan a un futuro donde las NFT mejoran la invención y la licencia.