# Follow节点

## Introduction

**`follow`** 是 MetaID 规范的重要组成部分，它允许用户在区块链网络中创建和维护他们的社交关系。通过 **`follow`**，我们能显著提升 MetaID 的社交能力，为用户提供更丰富、更深度的交互体验。

<figure><img src="https://377496739-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FNaMZCEAQtOV5yhwyCugt%2Fuploads%2Flkyn91hosx3YEp8av0Kd%2Fimage.png?alt=media&#x26;token=350e3626-afd2-48b8-8a3e-36b3b6f29514" alt=""><figcaption></figcaption></figure>

### Spec

**`follow`** 协议的脚本格式如下：

```jsx
OP_FALSE
OP_IF
	metaid                           
	create                          
	/follow                         
	0                                
	0                                
	application/json;utf-8                
	{metaid}                        
OP_ENDIF
```

#### 关于 **`follow`** 的约定

1. 在 **`follow`格式中，`create`** 代表关注，**`revoke`** 代表取消关注。
2. 格式中的 **`metaid`** 必须是有效且已上链的 MetaID。如果 **`payload`** 中的 **`metaid`** 无效，那么 **`follow`** 是无效的。
3. 在 **`revoke`** 操作中，**`path`** 需要定位到一个有效的 `PIN`，且这个 `PIN` 必须有效的 **`follow`** `PIN`。

### 示例

以用户 A 关注用户 B 为例：

用户 A 的 MetaID：**`c08c4e96514ee5c4f91b6df3de7a42f797a36af7265918a6b74d5198f87682adi0`**

用户 B 的 MetaID：**`2464ad8d35e601f8b73c80976104ff00e878f58dc2f2936ec3a269fe34d962c2i0`**

用户 A 关注用户 B 的脚本操作如下：

```jsx
OP_FALSE
OP_IF
	metaid                         
	create                           
	/follow                          
	0                               
	0                               
	application/json;utf-8                
	2464ad8d35e601f8b73c80976104ff00e878f58dc2f2936ec3a269fe34d962c2i0       //用户B的metaid
OP_ENDIF
```

将 **`follow`** `PIN` 上链后生成的 **`pinId`** 为：**`dcvv5d4377f36c7c2466259593d0d4a0c1e5d7ec19500e082ce1eea3993f22b1aac1i0`**

然后，用户 A 取消关注用户 B 的脚本操作如下：

```jsx
OP_FALSE
OP_IF
	metaid                           
	revoke                          
	@dcvv5d4377f36c7c2466259593d0d4a0c1e5d7ec19500e082ce1eea3993f22b1aac1i0  
	OP_0                                
	OP_0                                
	OP_0                
	OP_0
OP_ENDIF
```

关注和取消关注的操作都会立即生效，并在链上产生相应的记录。
