Desplegar un Smart Contract
El primer paso, si aún no lo ha hecho, es desplegar un smart contract que definirá y representará los NFT que desea vender a sus jugadores y mostrar en su juego. Una vez que haya desplegado su smart contract, no olvide agregar la dirección de su contrato como una Sponsored Address en la página de “Gas Sponsoring” dentro del Builder Console. Así, las comisiones de gas de sus usuarios serán patrocinadas automáticamente usando sus créditos de cómputo al interactuar con los smart contracts de su juego.Desplegar un Remote Minter
Por defecto, los contratos ERC1155/721 desplegados a través del Builder Console requieren que quienes llamen tengan los permisos apropiados para mintear un token. Aunque esto pueda parecer una molestia a primera vista, ¡es algo bueno! Sin esto, cualquiera podría llamar al método de minteo en su contrato y darse a sí mismo ítems infinitos en el juego. Querrá implementar un servidor con un wallet de Sequence (u otro) y darle permisos de minteo en el Builder Console.Cómo lo hicimos en Jelly Forest
En Jelly Forest, todas las monedas que recolecta durante el juego se mintean como tokens ERC1155. Así es como lo hicimos:- Regístrese en Cloudflare – aquí es donde alojamos el código del servicio de minteo; si lo prefiere, puede usar cualquier otro método
- Abra la terminal u otra línea de comandos
git clone https://github.com/0xsequence-demos/cloudflare-worker-sequence-relayer.git
luegocd cloudflare-worker-sequence-relayer
git checkout permissionedMinter
pnpm install
– para instalar las dependencias- Instale wrangler
- Abra
wrangler.toml
- Asigne un nombre a su servidor cambiando el valor de
name
- Cree un nuevo wallet EOA y exporte la clave privada. Cualquier wallet EOA funciona. Puede usar Metamask para configurar un wallet fácilmente y exportar la clave privada. ¡Tenga mucho cuidado con la clave privada y no la guarde en texto plano en su computadora ni la suba a control de versiones! Establezca esto en
PKEY
- Establezca el
CONTRACT_ADDRESS
- Establezca el
PROJECT_ACCESS_KEY
– esta es su clave API de producción del Builder Console que obtuvo antes al configurar el objeto scriptableSequenceConfig
- Establezca el
CHAIN_HANDLE
– si no está seguro de cuál es, puede ver elCHAIN_HANDLE
de cada red respectiva en la página Node Gateway del Builder Console.
- Asigne un nombre a su servidor cambiando el valor de
pnpm dev
– esto implementará el servidor localmente. Debería ver en la línea de comandos a qué localhost se implementó- Abra otra ventana de línea de comandos
curl http://localhost:8787
– sustituya el localhost que le hayan asignado. Esto enviará un ping al servidor.- En la línea de comandos donde está corriendo el servidor localhost, debería ver que la dirección del wallet del minter ha sido registrada
- Otorgue permisos de minteo a esta dirección en el Builder Console
- Busque el contrato bajo
Contracts
y haga clic para abrirlo - Haga clic en
Write Contract
- Expanda
grantRole
- En
role
ingrese0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6
– este es el hash Keccak-256 deMINTER_ROLE
- En
account
pegue la dirección del wallet del minter
- Busque el contrato bajo
wrangler deploy
– esto implementará el código en un Cloudflare Worker y le dará una URL de minteo
proof
es generado por el cliente que envía la solicitud de minteo. En el Unity SDK esto se implementa mediante el MintingRequestProver.
Manejar los tokens comprados por IAP con el Remote Minter
Arriba, desplegamos un remote minter que es útil para mintear tokens que pueden ganarse mediante acciones dentro del juego. Veamos cómo podemos aprovechar este servidor para también mintear tokens que se pueden comprar vía IAP. Notará que también se puede incluir un recibo en el payload enviado al remote minter. Aquí es donde incluirá el recibo IAP de Google/Apple. Unity recomienda usar el proyecto IAP de Nobuyori Takahashi para verificar los recibos IAP recibidos vía Unity IAP en el servidor. Una vez que haya validado el recibo en el servidor, puede continuar con su lógica de minteo, usando el código de ejemplo provisto arriba como referencia.Implementación en Unity
En el lado de Unity, el primer paso es integrar Unity IAP en su proyecto. En sus métodosProcessPurchase
en su IStoreListener
del proceso de integración, querrá iniciar el proceso de minteo. En Jelly Forest, esto se hace a través de los scripts UnityIAP y PremiumItem.
En cuanto al payload, puede ver en la implementación de PremiumItem
que estoy agregando una PermissionedMintTransaction a un TransactionQueuer
.
_permissionedMinterTransactionQueuer
es un PermissionedMinterTransactionQueuer
.
Esto enviará un payload en este formato:
Apple y Google permiten a los usuarios la opción de hacer un contracargo de una compra IAP hecha por error. En este caso, su usuario aún tendrá el/los token(s) minteados. Aunque puede manejar esto por medios tradicionales (por ejemplo, prohibiendo a jugadores que frecuentemente hacen contracargos), debe tener cuidado de no vender NFT de alto valor por este método debido al riesgo de contracargos fraudulentos.