mirror of
https://github.com/status-im/docs.status.network.git
synced 2026-08-27 16:41:08 +00:00
Update i18n translations on gasless transactions documentation
Signed-off-by: yjkellyjoo <yejinkellyjoo@gmail.com>
This commit is contained in:
committed by
Yejin Kelly Joo
parent
3f4e5e6a48
commit
425d04e9d7
+41
-25
@@ -9,9 +9,11 @@ keywords: [Status Network, ガスレストランザクション, Linea, RLN, Rat
|
||||
|
||||
Status Networkは大規模なガスレストランザクションの導入を目指しています。このガスレスアプローチの主要コンポーネントは、VacのRate Limiting Nullifierで、従来のガス手数料を必要とせずにトランザクション速度制限を可能にします。この文書では、ガスレストランザクションを安全に有効にするために必要なアーキテクチャと統合要素について説明します。
|
||||
|
||||
これらのガスレストランザクションの実装コードは、[Status Networkモノレポ](https://github.com/status-im/status-network-monorepo)で利用可能です。
|
||||
ガスレストランザクションの実装コードは、[Status Networkモノレポ](https://github.com/status-im/status-network-monorepo?tab=readme-ov-file#architecture-components)で利用可能です。
|
||||
|
||||
### 1.2 RLN
|
||||
ガスレスの運用レベルの実装についての詳細は、[Karma統合ガイド](/build-for-karma/guides)を参照してください。
|
||||
|
||||
## RLN
|
||||
|
||||
RLNは、違反が発生しない限りユーザーのプライバシーを損なうことなくスパムを防ぐように設計されたゼロ知識システムです。ZKPとShamirの秘密分散を通じて実行される暗号化速度制限で従来のガス手数料を置き換えます。
|
||||
|
||||
@@ -21,7 +23,7 @@ RLNの特徴:
|
||||
- **Shamirの秘密分散とNullifier:** ユーザーはトランザクションの一意のnullifierを生成するために使用される秘密鍵を保持します。ユーザーがエポック(ブロックやタイムスタンプなど)内でトランザクション制限を超えると、秘密鍵が回復可能になり、露出します。
|
||||
- **スパム検出:** 制限を超えるユーザーは効果的に自分の秘密を明かすことになり、拒否リストへの追加、将来の高いガス費用、または潜在的なトークンスラッシングなどのペナルティを受けます。
|
||||
|
||||
### 1.3. RLNメンバーシップ管理
|
||||
### RLNメンバーシップ管理
|
||||
|
||||
RLNは大規模なメンバーシップ証明を効率的に処理するためにスパースマークルツリーを使用します。ベンチマーク研究により、100万アカウントをサポートする高さ20のツリーが証明生成と検証に最適なパフォーマンスを提供することが判明しました。100万アカウントを超えるスケーラビリティのために、レジストリと共に複数のSMTを使用してユーザーを適切なツリーに誘導できます。
|
||||
|
||||
@@ -34,20 +36,28 @@ graph TD
|
||||
B -->|ソウルバウンドトークン| C{ティア割り当て}
|
||||
|
||||
subgraph "ティア制限"
|
||||
D[Basic]
|
||||
E[Active]
|
||||
F[Regular]
|
||||
G[Power User]
|
||||
H[High-Throughput]
|
||||
I[S-Tier]
|
||||
T1[Entry]
|
||||
T2[Newbie]
|
||||
T3[Basic]
|
||||
T4[Active]
|
||||
T5[Regular]
|
||||
T6[Power User]
|
||||
T7[Pro User]
|
||||
T8[High-Throughput]
|
||||
T9[S-Tier]
|
||||
T10[Legendary]
|
||||
end
|
||||
|
||||
C --> D
|
||||
C --> E
|
||||
C --> F
|
||||
C --> G
|
||||
C --> H
|
||||
C --> I
|
||||
C --> T1
|
||||
C --> T2
|
||||
C --> T3
|
||||
C --> T4
|
||||
C --> T5
|
||||
C --> T6
|
||||
C --> T7
|
||||
C --> T8
|
||||
C --> T9
|
||||
C --> T10
|
||||
|
||||
%% RLNフロー
|
||||
A -->|ガスレスTx送信| J[RPCノード]
|
||||
@@ -96,15 +106,15 @@ graph TD
|
||||
class A wallet
|
||||
class B,L karma
|
||||
class C tier
|
||||
class D,E,F,G,H,I tierNode
|
||||
class T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 tierNode
|
||||
class J,K,K1,K2,K3,M,N,O rln
|
||||
class P,Q,R,S,T,U,V,W sequencer
|
||||
class X,Y,Z,AA gas
|
||||
```
|
||||
|
||||
## 3. システムコンポーネント
|
||||
## システムコンポーネント
|
||||
|
||||
### 3.1 Prover
|
||||
### Prover
|
||||
|
||||
Proverは3つのサービスで構成されるシステムです:
|
||||
|
||||
@@ -114,7 +124,7 @@ Proverは3つのサービスで構成されるシステムです:
|
||||
|
||||
これらのサービスは安全な認証情報管理、証明生成、トランザクション追跡を保証し、gRPCがSequencerとの低遅延通信を可能にします。
|
||||
|
||||
### 3.2 RLN Verifier
|
||||
### RLN Verifier
|
||||
|
||||
RLN Verifierはsequencer内のbesuプラグインで、Java Native Interfaceを介してRLNのZerokit Rustライブラリを活用します。
|
||||
Verifierは:
|
||||
@@ -125,7 +135,7 @@ Verifierは:
|
||||
|
||||
検証に失敗したトランザクションは拒否され、ユーザーは一時的に拒否リストに追加される場合があります。
|
||||
|
||||
### 3.3 拒否リスト
|
||||
### 拒否リスト
|
||||
|
||||
拒否リストはクォータを超過したりスパムに関与したりするユーザーを一時的に制限します:
|
||||
|
||||
@@ -133,10 +143,16 @@ Verifierは:
|
||||
- ユーザーはプレミアムガス手数料を支払うことで制限を回避できます
|
||||
- プレミアム手数料を支払うとユーザーがリストから削除され、追加のKarmaを獲得します
|
||||
|
||||
### 3.4 `linea_estimateGas` RPC修正
|
||||
## `linea_estimateGas` RPC修正
|
||||
|
||||
linea_estimateGasメソッドは拒否リストのユーザーを考慮するようにカスタマイズされています:
|
||||
Status Networkは、ベースのLinea `linea_estimateGas`をKarma対応の動作で拡張しており、返される**手数料フィールド**は送信者アドレス`from`のKarma残高に依存する場合があります。
|
||||
`gasLimit`の計算は、ベースのLinea実装(内部的に標準の`eth_estimateGas`ロジックを使用)から変更されていません。
|
||||
|
||||
- ユーザーの拒否リストステータスをチェックします
|
||||
- 必要に応じてプレミアムガス倍率を追加します
|
||||
- ユーザーに透明性と正確なガス推定を提供します
|
||||
具体的には、Status Networkの`linea_estimateGas`は:
|
||||
|
||||
- **拒否リストプレミアムの適用**: 送信者が拒否リストに掲載されている場合、ノードは通常の手数料見積もりを計算し、**手数料フィールド**にプレミアム倍率を適用します。
|
||||
- **対象ユーザーへのガスレス見積もりの返却**: 送信者に利用可能なKarmaクォータがある場合、メソッドはゼロの`baseFeePerGas`と`priorityFeePerGas`を返します。
|
||||
|
||||
上記のロジックは、[Status Networkモノレポのこのセクション](https://github.com/status-im/status-network-monorepo/blob/v1.0.1/besu-plugins/linea-sequencer/sequencer/src/main/java/net/consensys/linea/rpc/methods/LineaEstimateGas.java#L218)でオープンソース化されている修正版`LineaEstimateGas`実装に含まれています。
|
||||
|
||||
Karma対応の手数料見積もり動作と`linea_estimateGas`の詳細については、[JSON-RPC API](/tools/rpc/json-rpc)を参照してください。
|
||||
|
||||
+41
-25
@@ -9,9 +9,11 @@ keywords: [Status Network, 가스리스 트랜잭션, Linea, RLN, Rate Limiting
|
||||
|
||||
Status Network는 대규모 가스리스 트랜잭션 도입을 목표로 합니다. 이 가스리스 접근 방식의 핵심 구성 요소는 Vac의 Rate Limiting Nullifier로, 기존 가스 수수료 없이도 트랜잭션 속도 제한을 가능하게 합니다. 이 문서는 가스리스 트랜잭션을 안전하게 활성화하는 데 필요한 아키텍처와 통합 요소를 설명합니다.
|
||||
|
||||
이러한 가스리스 트랜잭션의 구현 코드는 [Status Network 모노레포](https://github.com/status-im/status-network-monorepo)에서 확인할 수 있습니다.
|
||||
가스리스 트랜잭션의 구현 코드는 [Status Network 모노레포](https://github.com/status-im/status-network-monorepo?tab=readme-ov-file#architecture-components)에서 확인할 수 있습니다.
|
||||
|
||||
### 1.2 RLN
|
||||
가스리스의 운영 수준 구현에 대한 자세한 내용은 [Karma 통합 가이드](/build-for-karma/guides)를 참조하세요.
|
||||
|
||||
## RLN
|
||||
|
||||
RLN은 위반이 발생하지 않는 한 사용자 프라이버시를 손상시키지 않으면서 스팸을 방지하도록 설계된 영지식 시스템입니다. ZKP와 Shamir의 비밀 공유를 통해 시행되는 암호화 속도 제한으로 기존 가스 수수료를 대체합니다.
|
||||
|
||||
@@ -21,7 +23,7 @@ RLN 특성:
|
||||
- **Shamir의 비밀 공유 및 Nullifier:** 사용자는 트랜잭션에 대한 고유한 nullifier를 생성하는 데 사용되는 비밀 키를 보유합니다. 사용자가 에포크(예: 블록 또는 타임스탬프) 내에서 트랜잭션 제한을 초과하면 비밀 키가 복구 가능해져 노출됩니다.
|
||||
- **스팸 탐지:** 제한을 초과하는 사용자는 효과적으로 자신의 비밀을 공개하게 되어 거부 목록 포함, 향후 높은 가스 비용 또는 잠재적인 토큰 슬래싱과 같은 처벌을 받게 됩니다.
|
||||
|
||||
### 1.3. RLN 멤버십 관리
|
||||
### RLN 멤버십 관리
|
||||
|
||||
RLN은 대규모 멤버십 증명을 효율적으로 처리하기 위해 희소 머클 트리를 사용합니다. 벤치마킹 연구에 따르면 100만 계정을 지원하는 높이 20의 트리가 증명 생성 및 검증에 최적의 성능을 제공합니다. 100만 계정을 초과하는 확장성을 위해 레지스트리와 함께 여러 SMT를 사용하여 사용자를 적절한 트리로 안내할 수 있습니다.
|
||||
|
||||
@@ -34,20 +36,28 @@ graph TD
|
||||
B -->|소울바운드 토큰| C{티어 할당}
|
||||
|
||||
subgraph "티어 제한"
|
||||
D[Basic]
|
||||
E[Active]
|
||||
F[Regular]
|
||||
G[Power User]
|
||||
H[High-Throughput]
|
||||
I[S-Tier]
|
||||
T1[Entry]
|
||||
T2[Newbie]
|
||||
T3[Basic]
|
||||
T4[Active]
|
||||
T5[Regular]
|
||||
T6[Power User]
|
||||
T7[Pro User]
|
||||
T8[High-Throughput]
|
||||
T9[S-Tier]
|
||||
T10[Legendary]
|
||||
end
|
||||
|
||||
C --> D
|
||||
C --> E
|
||||
C --> F
|
||||
C --> G
|
||||
C --> H
|
||||
C --> I
|
||||
C --> T1
|
||||
C --> T2
|
||||
C --> T3
|
||||
C --> T4
|
||||
C --> T5
|
||||
C --> T6
|
||||
C --> T7
|
||||
C --> T8
|
||||
C --> T9
|
||||
C --> T10
|
||||
|
||||
%% RLN 플로우
|
||||
A -->|가스리스 Tx 제출| J[RPC 노드]
|
||||
@@ -96,15 +106,15 @@ graph TD
|
||||
class A wallet
|
||||
class B,L karma
|
||||
class C tier
|
||||
class D,E,F,G,H,I tierNode
|
||||
class T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 tierNode
|
||||
class J,K,K1,K2,K3,M,N,O rln
|
||||
class P,Q,R,S,T,U,V,W sequencer
|
||||
class X,Y,Z,AA gas
|
||||
```
|
||||
|
||||
## 3. 시스템 구성 요소
|
||||
## 시스템 구성 요소
|
||||
|
||||
### 3.1 Prover
|
||||
### Prover
|
||||
|
||||
Prover는 세 가지 서비스로 구성된 시스템입니다:
|
||||
|
||||
@@ -114,7 +124,7 @@ Prover는 세 가지 서비스로 구성된 시스템입니다:
|
||||
|
||||
이러한 서비스는 안전한 자격 증명 관리, 증명 생성 및 트랜잭션 추적을 보장하며, gRPC는 Sequencer와의 저지연 통신을 가능하게 합니다.
|
||||
|
||||
### 3.2 RLN Verifier
|
||||
### RLN Verifier
|
||||
|
||||
RLN Verifier는 sequencer 내부의 besu 플러그인으로, Java Native Interface를 통해 RLN의 Zerokit Rust 라이브러리를 활용합니다.
|
||||
Verifier는:
|
||||
@@ -125,7 +135,7 @@ Verifier는:
|
||||
|
||||
검증에 실패한 트랜잭션은 거부되며, 사용자는 일시적으로 거부 목록에 추가될 수 있습니다.
|
||||
|
||||
### 3.3 거부 목록
|
||||
### 거부 목록
|
||||
|
||||
거부 목록은 할당량을 초과하거나 스팸에 참여하는 사용자를 일시적으로 제한합니다:
|
||||
|
||||
@@ -133,10 +143,16 @@ Verifier는:
|
||||
- 사용자는 프리미엄 가스 수수료를 지불하여 제한을 우회할 수 있습니다
|
||||
- 프리미엄 수수료를 지불하면 사용자가 목록에서 제거되고 추가 Karma를 획득합니다
|
||||
|
||||
### 3.4 `linea_estimateGas` RPC 수정
|
||||
## `linea_estimateGas` RPC 수정
|
||||
|
||||
linea_estimateGas 메서드는 거부 목록의 사용자를 고려하도록 사용자 정의됩니다:
|
||||
Status Network는 기본 Linea `linea_estimateGas`를 Karma 인식 동작으로 확장하여, 반환되는 **수수료 필드**가 발신자 주소 `from`의 Karma 잔액에 따라 달라질 수 있습니다.
|
||||
`gasLimit` 계산은 기본 Linea 구현(내부적으로 표준 `eth_estimateGas` 로직을 사용)에서 변경되지 않았습니다.
|
||||
|
||||
- 사용자의 거부 목록 상태를 확인합니다
|
||||
- 필요한 경우 프리미엄 가스 배수를 추가합니다
|
||||
- 사용자에게 투명성과 정확한 가스 추정을 제공합니다
|
||||
구체적으로, Status Network의 `linea_estimateGas`는:
|
||||
|
||||
- **거부 목록 프리미엄 적용**: 발신자가 거부 목록에 있는 경우, 노드는 정상 수수료 추정을 계산한 다음 **수수료 필드**에 프리미엄 배수를 적용합니다.
|
||||
- **적격 사용자에게 가스리스 추정 반환**: 발신자에게 사용 가능한 Karma 할당량이 있는 경우, 메서드는 0의 `baseFeePerGas`와 `priorityFeePerGas`를 반환합니다.
|
||||
|
||||
위 로직은 [Status Network 모노레포의 이 섹션](https://github.com/status-im/status-network-monorepo/blob/v1.0.1/besu-plugins/linea-sequencer/sequencer/src/main/java/net/consensys/linea/rpc/methods/LineaEstimateGas.java#L218)에서 오픈소스로 공개된 수정된 `LineaEstimateGas` 구현에 포함되어 있습니다.
|
||||
|
||||
Karma 인식 수수료 추정 동작과 `linea_estimateGas` 세부 사항은 [JSON-RPC API](/tools/rpc/json-rpc)를 참조하세요.
|
||||
|
||||
+41
-25
@@ -9,9 +9,11 @@ keywords: [Status Network, 无Gas交易, Linea, RLN, Rate Limiting Nullifier, Ka
|
||||
|
||||
Status Network旨在大规模引入无Gas交易。这种无Gas方法的关键组件是Vac的速率限制无效器(Rate Limiting Nullifier),它允许在不需要传统Gas费用的情况下进行交易速率限制。本文档描述了安全启用无Gas交易所需的架构和集成元素。
|
||||
|
||||
这些无Gas交易的实现代码可在[Status Network代码库](https://github.com/status-im/status-network-monorepo)中找到。
|
||||
无Gas交易的实现代码可在[Status Network代码库](https://github.com/status-im/status-network-monorepo?tab=readme-ov-file#architecture-components)中找到。
|
||||
|
||||
### 1.2 RLN
|
||||
有关无Gas运营级别实现的更多信息,请参阅[Karma集成指南](/build-for-karma/guides)。
|
||||
|
||||
## RLN
|
||||
|
||||
RLN是一个零知识系统,旨在在不违规的情况下防止垃圾邮件而不损害用户隐私。它通过ZKP和Shamir秘密共享执行的加密速率限制来替代传统的Gas费用。
|
||||
|
||||
@@ -21,7 +23,7 @@ RLN特征:
|
||||
- **Shamir秘密共享和无效器:** 用户持有用于为交易生成唯一无效器的秘密密钥。如果用户在一个时期(例如,区块或时间戳)内超过其交易限制,他们的秘密密钥将变得可恢复,从而暴露他们。
|
||||
- **垃圾邮件检测:** 超过限制的用户有效地泄露了他们的秘密,导致诸如拒绝列表包含、未来更高的Gas成本或潜在的代币削减等惩罚。
|
||||
|
||||
### 1.3. RLN成员管理
|
||||
### RLN成员管理
|
||||
|
||||
RLN使用稀疏默克尔树来高效处理大规模成员证明。基准研究确定,支持100万账户的高度为20的树为证明生成和验证提供了最佳性能。对于超过100万账户的可扩展性,可以使用多个SMT和注册表来引导用户到适当的树。
|
||||
|
||||
@@ -34,20 +36,28 @@ graph TD
|
||||
B -->|灵魂绑定代币| C{等级分配}
|
||||
|
||||
subgraph "等级限制"
|
||||
D[Basic]
|
||||
E[Active]
|
||||
F[Regular]
|
||||
G[Power User]
|
||||
H[High-Throughput]
|
||||
I[S-Tier]
|
||||
T1[Entry]
|
||||
T2[Newbie]
|
||||
T3[Basic]
|
||||
T4[Active]
|
||||
T5[Regular]
|
||||
T6[Power User]
|
||||
T7[Pro User]
|
||||
T8[High-Throughput]
|
||||
T9[S-Tier]
|
||||
T10[Legendary]
|
||||
end
|
||||
|
||||
C --> D
|
||||
C --> E
|
||||
C --> F
|
||||
C --> G
|
||||
C --> H
|
||||
C --> I
|
||||
C --> T1
|
||||
C --> T2
|
||||
C --> T3
|
||||
C --> T4
|
||||
C --> T5
|
||||
C --> T6
|
||||
C --> T7
|
||||
C --> T8
|
||||
C --> T9
|
||||
C --> T10
|
||||
|
||||
%% RLN流程
|
||||
A -->|提交无Gas交易| J[RPC节点]
|
||||
@@ -96,15 +106,15 @@ graph TD
|
||||
class A wallet
|
||||
class B,L karma
|
||||
class C tier
|
||||
class D,E,F,G,H,I tierNode
|
||||
class T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 tierNode
|
||||
class J,K,K1,K2,K3,M,N,O rln
|
||||
class P,Q,R,S,T,U,V,W sequencer
|
||||
class X,Y,Z,AA gas
|
||||
```
|
||||
|
||||
## 3. 系统组件
|
||||
## 系统组件
|
||||
|
||||
### 3.1 Prover
|
||||
### Prover
|
||||
|
||||
Prover是一个由三个服务组成的系统:
|
||||
|
||||
@@ -114,7 +124,7 @@ Prover是一个由三个服务组成的系统:
|
||||
|
||||
这些服务确保安全的凭据管理、证明生成和交易跟踪,gRPC使与Sequencer的低延迟通信成为可能。
|
||||
|
||||
### 3.2 RLN验证器
|
||||
### RLN验证器
|
||||
|
||||
RLN验证器是sequencer内部的besu插件,通过Java本机接口利用RLN的Zerokit Rust库。
|
||||
验证器:
|
||||
@@ -125,7 +135,7 @@ RLN验证器是sequencer内部的besu插件,通过Java本机接口利用RLN的
|
||||
|
||||
验证失败的交易将被拒绝,用户可能会被临时添加到拒绝列表中。
|
||||
|
||||
### 3.3 拒绝列表
|
||||
### 拒绝列表
|
||||
|
||||
拒绝列表临时限制超过配额或参与垃圾邮件的用户:
|
||||
|
||||
@@ -133,10 +143,16 @@ RLN验证器是sequencer内部的besu插件,通过Java本机接口利用RLN的
|
||||
- 用户可以通过支付高级Gas费用来绕过限制
|
||||
- 支付高级费用会将用户从列表中移除并获得额外的Karma
|
||||
|
||||
### 3.4 `linea_estimateGas` RPC修改
|
||||
## `linea_estimateGas` RPC修改
|
||||
|
||||
linea_estimateGas方法被定制以考虑拒绝列表上的用户:
|
||||
Status Network扩展了基础Linea `linea_estimateGas`,使其具备Karma感知行为,因此返回的**手续费字段**可能取决于发送者地址`from`的Karma余额。
|
||||
`gasLimit`的计算与基础Linea实现保持不变(其内部使用标准的`eth_estimateGas`逻辑)。
|
||||
|
||||
- 检查用户的拒绝列表状态
|
||||
- 根据需要添加高级Gas倍数
|
||||
- 为用户提供透明度和准确的Gas估算
|
||||
具体来说,Status Network的`linea_estimateGas`:
|
||||
|
||||
- **应用拒绝列表溢价**:如果发送者在拒绝列表上,节点会计算正常的费用估算,然后对**手续费字段**应用溢价倍数。
|
||||
- **为符合条件的用户返回无Gas估算**:如果发送者有可用的Karma配额,该方法返回零`baseFeePerGas`和`priorityFeePerGas`。
|
||||
|
||||
上述逻辑包含在我们修改的`LineaEstimateGas`实现中,开源于[Status Network代码库的这一部分](https://github.com/status-im/status-network-monorepo/blob/v1.0.1/besu-plugins/linea-sequencer/sequencer/src/main/java/net/consensys/linea/rpc/methods/LineaEstimateGas.java#L218)。
|
||||
|
||||
有关Karma感知费用估算行为和`linea_estimateGas`的详细信息,请参阅[JSON-RPC API](/tools/rpc/json-rpc)。
|
||||
|
||||
@@ -4859,10 +4859,10 @@ caniuse-api@^3.0.0:
|
||||
lodash.memoize "^4.1.2"
|
||||
lodash.uniq "^4.5.0"
|
||||
|
||||
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001646, caniuse-lite@^1.0.30001669, caniuse-lite@^1.0.30001716:
|
||||
version "1.0.30001743"
|
||||
resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001743.tgz"
|
||||
integrity sha512-e6Ojr7RV14Un7dz6ASD0aZDmQPT/A+eZU+nuTNfjqmRrmkmQlnTNWH0SKmqagx9PeW87UVqapSurtAXifmtdmw==
|
||||
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001646, caniuse-lite@^1.0.30001669, caniuse-lite@^1.0.30001716, caniuse-lite@^1.0.30001759, caniuse-lite@^1.0.30001766:
|
||||
version "1.0.30001776"
|
||||
resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001776.tgz"
|
||||
integrity sha512-sg01JDPzZ9jGshqKSckOQthXnYwOEP50jeVFhaSFbZcOy05TiuuaffDOfcwtCisJ9kNQuLBFibYywv2Bgm9osw==
|
||||
|
||||
caniuse-lite@^1.0.30001759, caniuse-lite@^1.0.30001766:
|
||||
version "1.0.30001767"
|
||||
|
||||
Reference in New Issue
Block a user