Skip to content

Unity Ecosystem Wallets #151

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 5 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -322,6 +322,15 @@
"sdk/unity/installation",
"sdk/unity/setup",
"sdk/unity/bootstrap_game",
{
"group": "Ecosystem Wallet",
"pages": [
"sdk/unity/ecosystem-wallet/setup",
"sdk/unity/ecosystem-wallet/authentication",
"sdk/unity/ecosystem-wallet/manage-sessions",
"sdk/unity/ecosystem-wallet/blockchain"
]
},
{
"group": "Onboard",
"pages": [
Expand Down
46 changes: 46 additions & 0 deletions es/sdk/unity/ecosystem-wallet/authentication.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
title: Authentication
description: Documentación de Ecosystem Wallet para el SDK de Unity de Sequence.
---

Comience con una sesión implícita que está restringida a contratos creados por Sequence.
Alternativamente, puede agregar un objeto `IPermissions` a cada llamada de inicio de sesión si desea conectarse directamente a una sesión explícita.

[Aprenda cómo construir permisos.](/sdk/unity/ecosystem-wallet/permissions)

### Recuperar wallet desde el almacenamiento

```csharp
IWallet wallet = SequenceWallet.RecoverFromStorage();
```

### Iniciar sesión con correo electrónico

```csharp
string email = "[email protected]";
IWallet wallet = await connect.SignInWithEmail(email);
```

### Iniciar sesión con Google

```csharp
IWallet wallet = await connect.SignInWithGoogle();
```

### Iniciar sesión con Apple

```csharp
IWallet wallet = await connect.SignInWithApple();
```

### Iniciar sesión con Passkey

```csharp
IWallet wallet = await connect.SignInWithPasskey();
```

### Iniciar sesión con frase mnemotécnica

```csharp
IWallet wallet = await connect.SignInWithMnemonic();
```
61 changes: 61 additions & 0 deletions es/sdk/unity/ecosystem-wallet/blockchain.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
---
title: Interacciones con blockchain
description: Documentación de Ecosystem Wallet para el SDK de Unity de Sequence.
---

## Firmar mensajes
Firmar mensajes en un navegador externo.

```csharp
Chain chain = Chain.TestnetAbitrumSepolia;
string message = "Your message to sign.";

SignMessageResponse response = await wallet.SignMessage(chain, message);
string signature = response.signature;
```

## Enviar transacciones
Enviar transacciones sin pagar comisiones de gas en cualquier testnet o cuando use Gas Sponsorship.

```csharp
Chain chain = Chain.TestnetAbitrumSepolia;
Address to = new Address("0x33985d320809E26274a72E03268c8a29927Bc6dA");

ITransaction[] transactions = new Transaction[]
{
new Transaction(to, 0, "implicitEmit()"),
new Transaction(to, 0, "explicitEmit()")
};

string txnHash = await wallet.SendTransaction(chain, transactions);
```

## Enviar transacciones usando Fee Options
Obtenga las opciones de comisión disponibles para el usuario y elija una para usar al enviar la transacción.

```csharp
Chain chain = Chain.TestnetAbitrumSepolia;
Address to = new Address("0x33985d320809E26274a72E03268c8a29927Bc6dA");

ITransaction[] transactions = new Transaction[]
{
new Transaction(to, 0, "implicitEmit()"),
new Transaction(to, 0, "explicitEmit()")
};

FeeOption[] feeOptions = await _wallet.GetFeeOption(chain, transactions);
FeeOption feeOption = feeOptions[0]; // Choose a way to select the appropriate option

string txnHash = await wallet.SendTransaction(chain, transactions, feeOption);
```

### Verificar si su wallet admite una transacción
Puede hacer la misma llamada para varias transacciones a la vez si pasa un arreglo `Transactions[]`.

```csharp
Chain chain = Chain.TestnetAbitrumSepolia;
Address to = new Address("0x33985d320809E26274a72E03268c8a29927Bc6dA");
ITransaction transaction = new Transaction(to, 0, "implicitEmit()");

bool supported = await wallet.SupportsTransaction(chain, transaction);
```
53 changes: 53 additions & 0 deletions es/sdk/unity/ecosystem-wallet/manage-sessions.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
---
title: Gestionar sesiones
description: Documentación de Ecosystem Wallet para el SDK de Unity de Sequence.
---

### Agregar sesión
Agregue sesiones adicionales a su método de inicio de sesión existente. Cada sesión comparte la misma dirección de wallet con la posibilidad de asignar diferentes permisos para cada sesión. Debe proporcionar un objeto `IPermissions` cada vez que llame a `AddSession`.

[Aprenda cómo construir permisos.](/sdk/unity/ecosystem-wallet/permissions)

```csharp
Address contractAddress = new Address("0x33985d320809E26274a72E03268c8a29927Bc6dA");
BigInteger deadline = new BigInteger(DateTimeOffset.UtcNow.ToUnixTimeSeconds() * 1000 + 1000 * 60 * 5000);

IPermissions permissions = new ContractPermissions(Chain.TestnetAbitrumSepolia, contractAddress, deadline, 0);
await wallet.AddSession(permissions);
```

### Desconectar
Cerrar sesión borrará el almacenamiento local.

```csharp
wallet.Disconnect();
```

### Obtener todas las wallets de sesión
Obtenga todas las sesiones disponibles a las que está conectado actualmente.

```csharp
Address[] signerAddresses = wallet.GetAllSigners();
```

## Eventos

### Al crear wallet
El evento `WalletCreated` se activa cada vez que inicia sesión o recupera una wallet desde el almacenamiento.

```csharp
SequenceWallet.WalletCreated += wallet =>
{
// Integrate your own logic to handle wallet creations.
}
```

### Al desconectar wallet
El evento Disconnected se activa cada vez que ejecuta `wallet.Disconnect()`. Esto significa que debe volver a conectarse.

```csharp
SequenceWallet.Disconnected += () =>
{
// Integrate your own logic to handle disconnects.
}
```
51 changes: 51 additions & 0 deletions es/sdk/unity/ecosystem-wallet/permissions.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
---
title: Permisos
description: Documentación de Ecosystem Wallet para el SDK de Unity de Sequence.
---

### Parámetros

- **Chain:** La cadena con la que este firmante puede interactuar.
- **Target:** La dirección del contrato con la que este firmante puede interactuar.
- **Deadline:** La fecha límite para este permiso como timestamp UTC en milisegundos.
- **Value Limit:** El monto máximo total de tokens nativos que este firmante puede enviar.
- **Parameter Rules:** Las reglas que definen cómo este firmante puede interactuar con el contrato objetivo.

### Permiso para un solo contrato

```csharp
Chain chain = Chain.TestnetAbitrumSepolia;
Address contractAddress = new Address("0x33985d320809E26274a72E03268c8a29927Bc6dA");
BigInteger deadline = new BigInteger(DateTimeOffset.UtcNow.ToUnixTimeSeconds() * 1000 + 1000 * 60 * 5000);
BigInteger valueLimit = 0;

IPermissions permissions = new ContractPermissions(chain, contractAddress, deadline, valueLimit);
```

### Permisos con múltiples objetivos

```csharp
Chain chain = Chain.TestnetAbitrumSepolia;
Address contractAddress1 = new Address("0x7F5c764cBc14f9669B88837ca1490cCa17c31607");
Address contractAddress2 = new Address("0x33985d320809E26274a72E03268c8a29927Bc6dA");

IPermissions permissions = new Permissions(chain,
new ContractPermissions(contractAddress1, deadline, valueLimit),
new ContractPermissions(contractAddress2, deadline, valueLimit));
```

### Reglas de parámetros

```csharp
var rule = new ParameterRule
{
cumulative = false,
operation = (int)ParameterOperation.equal,
value = Array.Empty<byte>(),
offset = new BigInt(0),
mask = Array.Empty<byte>(),
};

ContractPermissions permissions = new ContractPermission(...);
permissions.AddRule(rule);
```
23 changes: 23 additions & 0 deletions es/sdk/unity/ecosystem-wallet/setup.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
---
title: Setup
description: Documentación de Ecosystem Wallet para el SDK de Unity de Sequence.
---

Cree un objeto `SequenceConnect` y especifique la Chain y el Ecosystem a los que desea permitir que los usuarios se conecten.

```csharp
EcosystemType ecosystem = EcosystemType.Sequence;
SequenceConnect connect = new SequenceConnect(ecosystem);
```

### Pruebe nuestra demo integrada
Importe el ejemplo `Ecosystem Wallet Demo` desde el Package Manager de Unity. Además, revise nuestro script base
`SequenceEcosystemWalletWindow` para detalles de integración.

<Frame>
<img src="/images/unity/ecosystem-wallet-demo.png" />
</Frame>

<Frame>
<img src="/images/unity/ecosystem-wallet-setup.png" />
</Frame>
Binary file added images/unity/ecosystem-wallet-demo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/unity/ecosystem-wallet-setup.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
46 changes: 46 additions & 0 deletions ja/sdk/unity/ecosystem-wallet/authentication.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
title: 認証
description: SequenceのUnity SDK用エコシステムウォレットのドキュメント
---

まず、Sequenceで構築されたコントラクトに限定されたインプリシットセッションから始めます。
または、各サインイン時に`IPermissions`オブジェクトを追加することで、明示的なセッションに直接接続することも可能です。

[権限の構成方法はこちらをご覧ください。](/sdk/unity/ecosystem-wallet/permissions)

### ストレージからウォレットを復元する

```csharp
IWallet wallet = SequenceWallet.RecoverFromStorage();
```

### メールでサインイン

```csharp
string email = "[email protected]";
IWallet wallet = await connect.SignInWithEmail(email);
```

### Google でサインイン

```csharp
IWallet wallet = await connect.SignInWithGoogle();
```

### Apple でサインイン

```csharp
IWallet wallet = await connect.SignInWithApple();
```

### パスキーでサインイン

```csharp
IWallet wallet = await connect.SignInWithPasskey();
```

### ニーモニックでサインイン

```csharp
IWallet wallet = await connect.SignInWithMnemonic();
```
61 changes: 61 additions & 0 deletions ja/sdk/unity/ecosystem-wallet/blockchain.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
---
title: ブロックチェーンとの連携
description: SequenceのUnity SDK用エコシステムウォレットのドキュメント
---

## メッセージに署名する
外部ブラウザでメッセージに署名する。

```csharp
Chain chain = Chain.TestnetAbitrumSepolia;
string message = "Your message to sign.";

SignMessageResponse response = await wallet.SignMessage(chain, message);
string signature = response.signature;
```

## トランザクションを送信する
テストネットやGas Sponsorshipを利用している場合、ガス代を支払わずにトランザクションを送信できます。

```csharp
Chain chain = Chain.TestnetAbitrumSepolia;
Address to = new Address("0x33985d320809E26274a72E03268c8a29927Bc6dA");

ITransaction[] transactions = new Transaction[]
{
new Transaction(to, 0, "implicitEmit()"),
new Transaction(to, 0, "explicitEmit()")
};

string txnHash = await wallet.SendTransaction(chain, transactions);
```

## 手数料オプションを指定してトランザクションを送信する
ユーザーが利用可能な手数料オプションを取得し、トランザクション送信時に使用するものを選択します。

```csharp
Chain chain = Chain.TestnetAbitrumSepolia;
Address to = new Address("0x33985d320809E26274a72E03268c8a29927Bc6dA");

ITransaction[] transactions = new Transaction[]
{
new Transaction(to, 0, "implicitEmit()"),
new Transaction(to, 0, "explicitEmit()")
};

FeeOption[] feeOptions = await _wallet.GetFeeOption(chain, transactions);
FeeOption feeOption = feeOptions[0]; // Choose a way to select the appropriate option

string txnHash = await wallet.SendTransaction(chain, transactions, feeOption);
```

### お使いのウォレットがトランザクションに対応しているか確認する
`Transactions[]`配列を渡すことで、複数のトランザクションに対して同じ呼び出しを行うことができます。

```csharp
Chain chain = Chain.TestnetAbitrumSepolia;
Address to = new Address("0x33985d320809E26274a72E03268c8a29927Bc6dA");
ITransaction transaction = new Transaction(to, 0, "implicitEmit()");

bool supported = await wallet.SupportsTransaction(chain, transaction);
```
Loading