# @1hive/radspec 中文文档

规范地址：https://npmcn.com/package/%401hive/radspec/

版本：2\.0\.1
npm 元数据更新时间：2024-05-01T23:03:50.656Z
中文译文更新时间：2026-11-06T11:29:54.426Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%401hive/radspec
原文对照：https://npmcn.com/package/%401hive/radspec/?lang=original
项目主页：https://github.com/aragon/radspec#readme
源码仓库：https://github.com/aragon/radspec

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：174 kB，71 个文件
- 模块格式：CommonJS
- TypeScript 类型：未声明
- 运行依赖：3 个
- 首次发布：2021-11-29T02:23:35.039Z
- 最新版本发布：2023-10-28T02:07:26.408Z
- 近 30 天下载量：3385（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：2（近 12 个月 0 个）

## 中文简介

Radspec是Ethereum Natspec的安全替代品

## 安装

```sh
npm install @1hive/radspec
```

也可以使用：`pnpm add @1hive/radspec`、`yarn add @1hive/radspec`、`bun add @1hive/radspec`

## README

# 弧度光谱qq

[![Travis branch](https://img.shields.io/travis/aragon/radspec/master.svg?style=flat-square)](https://travis-ci.org/aragon/radspec) [![Coveralls github branch](https://img.shields.io/coveralls/github/aragon/radspec/master.svg?style=flat-square)](https://coveralls.io/github/aragon/radspec)

Radspec是Ethereum的动态表达式的安全解释器 [纳特斯佩克](https://github.com/ethereum/wiki/wiki/Ethereum-Natural-Specification-Format)。 。 。 .

这使得智能联系人开发者可以向终端用户显示改进过的函数文档,而无需 [安全隐患](https://npmcn.com/package/%401hive/radspec/#readme-aside-why-is-natspecjs-unsafe). Radspec定义了自己的语法结构并剖析了自己的AST,而不是直接评价不信任的JavaScript.

![](https://npmcn.com/package/%401hive/radspec/.github/assets/metamask_example.png)

## 特征

-   **表达式**:在智能合同最终用户进行交易时向其显示相关细节.
-   **外部电话**: Radspec可以查询其他合同.
-   **保险**: Radspec要求没有DOM访问或不信任的JavaScript评价.
-   **兼容**:大多数已存在的NatSpec动态表达式与Radspec兼容.

## 导 言( S)

Radspec支持任何合同编程语言,如Solity或Vyper,因为radspec在编译的JSON ABI上工作. 以下是使用"团结"的例子.

```solidity
pragma solidity ^0.5.0;

contract Tree {
    /// @notice Set the tree age to `numYears` years
    function setAge(uint256 numYears) external {
        // set the age into storage
    }
}
```

注意到 _动态表达式_ 联合国 `setAge` 函数。 在向最终用户介绍时,将根据用户提供的投入制作。 例如,如果最终用户使用10年的投入来调用合同,则用弧度表示如下:

> 将树龄设定为十年

使用 Solidity 编译器生成用户文档和 ABI:

```sh
solc --userdoc --abi tree.sol
```

由此产生产出:

```json
{
  "methods" :
  {
    "setAge(uint256)" :
    {
      "notice" : "Set the tree age to `numYears` years"
    }
  }
}

```

财务报告和审定财务报表

```json
[{
  "constant":false,
  "inputs":[{"name":"numYears","type":"uint256"}],
  "name":"setAge",
  "outputs":[],
  "payable":false,
  "stateMutability":"nonpayable",
  "type":"function"
}]
```

注意您也可以使用 [人可引水之二](https://blog.ricmoo.com/human-readable-contract-abis-in-ethers-js-141902f4d917)。关于上述例子:

```json
["function setAge(uint256 numYears) public view"]
```

* * *

使用弧度写一个简单的工具来解释此操作 :

```js
import radspec from 'radspec'

// Set userDoc and ABI from above
const expression = userDoc.methods["setAge(uint256)"].notice
const call = {
  abi: abi,
  transaction: {
    to: '0x8521742d3f456bd237e312d6e30724960f72517a',
    data: '0xd5dcf127000000000000000000000000000000000000000000000000000000000000000a'
  }
}
radspec.evaluate(expression, call)
  .then(console.log) // => "Set the tree age to 10 years"
```

或者看到更多的例子 [这里](https://npmcn.com/package/%401hive/radspec/examples) 和在 [测试](https://npmcn.com/package/%401hive/radspec/test/examples/examples.js)。 。 。 .

请告诉我们,如果还有什么你想要 拉德斯克能够评估 通过提交一个 [问题](https://github.com/aragon/radspec/issues/new)来啊!

## 安装

只需使用您最喜欢的节点.js包管理器:

```sh
npm i radspec
```

## 文档

关于弧度和弧度内部的文献可以找到 [这里](https://npmcn.com/package/%401hive/radspec/docs)。 。 。 .

## 捐款

传统发展

## 为什么Natspec.js不安全?

[纳特斯克.js](https://github.com/ethereum/natspec.js) 接受任何有效的 JavaScript 。 这有多种原因

1.  您需要自己写 JavaScript VM 或者使用 `eval` (不安全!)来自JavaScript内部
2.  一个全能的语言,有类,功能,还有更多的功能,对于一个简单的DSL可以解决的东西来说,绝对是过度的.

随着Dapps越来越复杂,最重要的是工具的书写方式使得钓鱼几乎是不可能的. 评估 JavaScript 直接使您的 Dapp 打开到用户仅提交交易的跨站脚本攻击(!) .

## 许可证

麻省理工学院

## 常见问题

### @1hive/radspec 是什么？

Radspec是Ethereum Natspec的安全替代品

### 如何安装 @1hive/radspec？

在项目目录运行 npm install @1hive/radspec，或使用 pnpm add / yarn add / bun add。

### @1hive/radspec 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/1hive\_\_radspec 是否存在。

### @1hive/radspec 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @1hive/radspec 可以商用吗？

@1hive/radspec 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @1hive/radspec 的下载量有多少？

根据 npm 官方下载统计，@1hive/radspec 在 2026/10/05 – 2026/11/03 这 30 天内被下载 3,385 次，日均约 113 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @1hive/radspec 还在维护吗？

最新版本 2\.0\.1 发布于 2023/10/28（3 年前）；至今共发布 2 个版本，其中过去 12 个月发布了 0 个；首次发布于 2021/11/29。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

