PRESS.one 开发者社区

PRESS.one 开发者社区

  • 文档
  • 博客
  • 开发者论坛

›REST API 文档

指南

  • 简介
  • DApp 开发流程
  • 创建 DApp
  • 数字签名相关知识
  • PRS 协议

REST API 文档

  • 概述
  • API 鉴权
  • 用户授权
  • 获取数字签名
  • 签名文件相关
  • 合约相关
  • 钱包相关

Node.js SDK 文档

  • SDK 安装
  • 用户授权
  • 签名文件相关
  • 合约相关
  • 钱包相关

签名文件相关

签名文件

PRS 提供了 API 让用户能够将兼容 PRS 协议的数据存放在 PRS 链上,目前支持多种类型的数据上链,包括 文件签名、合约创建等,更多内容请参考 PRS 协议。

本节将介绍如何上传文件并对文件签名,同时保存至 PRS 链上。

  1. 使用 keccak256 算法对文件进行 hash 计算,获取 filehash。

单向散列函数 keccak256 请参考数字签名

  1. 根据 PRS 协议对文件签名数据的规定,进行 data 数据组合。
data: { 
  file_hash: '9f5adad09ffaba620640151e7a76ff67846d65c48f57c8f3bfa79165986c5185' 
} 
  1. 对 data 进行数字签名,获取 hash、signature。
curl -X POST https://beta.press.one/api/v2/sign  \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE1NTIzNTM4MTMsImp0aSI6IjA4OTIxNjZiLTU3OTYtNDk2Yi04NTU0LTAwZTMxOWNhNGU1OCIsImRhdGEiOnsiYXV0aEFkZHJlc3MiOiIyNGJiODViMmEyZTcyYWY4NDllOGE4M2U5ZjJmY2UxZDdmOWY2Njg1In0sInByb3ZpZGVyIjoiZGFwcCJ9.qa76GKlcOHq-4salLQduPs3EHB3xWmlq7JJymYSAMmo" \
  -d '{ "payload": { "data": { "file_hash": "9f5adad09ffaba620640151e7a76ff67846d65c48f57c8f3bfa79165986c5185" } } }'
  1. 上传发布文件。

POST /api/v2/files

curl -X POST https://beta.press.one/api/v2/files  \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE1NTIzNTM4MTMsImp0aSI6IjA4OTIxNjZiLTU3OTYtNDk2Yi04NTU0LTAwZTMxOWNhNGU1OCIsImRhdGEiOnsiYXV0aEFkZHJlc3MiOiIyNGJiODViMmEyZTcyYWY4NDllOGE4M2U5ZjJmY2UxZDdmOWY2Njg1In0sInByb3ZpZGVyIjoiZGFwcCJ9.qa76GKlcOHq-4salLQduPs3EHB3xWmlq7JJymYSAMmo" \
  -H 'Content-Type: multipart/form-data; charset=utf-8; boundary=__X_PAW_BOUNDARY__' \
  -F "address=${address}" \
  -F "signature=${signature}" \
  -F "title=${title}" \
  -F "source=${source}" \
  -F "originUrl=${originUrl}" \
  -F "category=${category}" \
  -F "file=${file}"

FormData

参数类型备注
fileFile需要上传的文件,目前支持 markdown 以及图片文件
addressstring授权用户的 address,授权成功后和 token 一起返回的 authAddress
signaturestring步骤 3 中对 data 进行数字签名得到的 signature
titlestring文件的标题
sourcestring文件的来源,选填
originUrlstring文件的源 Url,选填
categorystring文件分类,选填

DApp 通过 Web 端授权成功之后,PRS 服务会为用户创建 Sub Key(由 PRS 保存),同时会返回对应的 access token。此时由于 Sub Key 保存在服务端,所以数字签名需要在服务端进行,PRS 提供了相应的 API 供用户签名。

根据 rId 获取文件

GET /api/v2/files/${rId}

  • rId: 创建文件之后返回的 id。
curl -X GET https://beta.press.one/api/v2/files/8b6885661754208a27d1aa3e23798e5e672c9fd856be2d8bf62d3b41c6f85424  \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE1NTIzNTM4MTMsImp0aSI6IjA4OTIxNjZiLTU3OTYtNDk2Yi04NTU0LTAwZTMxOWNhNGU1OCIsImRhdGEiOnsiYXV0aEFkZHJlc3MiOiIyNGJiODViMmEyZTcyYWY4NDllOGE4M2U5ZjJmY2UxZDdmOWY2Njg1In0sInByb3ZpZGVyIjoiZGFwcCJ9.qa76GKlcOHq-4salLQduPs3EHB3xWmlq7JJymYSAMmo" 

根据 msghash 获取文件

GET /api/v2/files/hash/${msghash}

  • msghash: 文件内容的 hash 值。
curl -X GET https://beta.press.one/api/v2/files/hash/c6fc6b9c137342943300084208314dbb1a77128fde1906599a91ae735fffb436  \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE1NTIzNTM4MTMsImp0aSI6IjA4OTIxNjZiLTU3OTYtNDk2Yi04NTU0LTAwZTMxOWNhNGU1OCIsImRhdGEiOnsiYXV0aEFkZHJlc3MiOiIyNGJiODViMmEyZTcyYWY4NDllOGE4M2U5ZjJmY2UxZDdmOWY2Njg1In0sInByb3ZpZGVyIjoiZGFwcCJ9.qa76GKlcOHq-4salLQduPs3EHB3xWmlq7JJymYSAMmo" 

Markdown 嵌入图片签名文件

在文章中,现在会有两种类型的图片:

  1. 外链图片
  2. 签名图片

外链图片

无需特别处理,直接显示。格式为:![引用图片](https://www.2cto.com/uploadfile/Collfiles/20161223/20161223101638336.jpg)

签名图片

格式为:![test](prs://file?rId=338ef6d80d39ba3f24f944e38ee8826168640a4cf01ad6976ed7fe23fd518072)。 其中,prs://file?rId=xxx 是我们图片的协议。rId 表示这个图片在链上对应的 id。这个协议是通用的,可以用来表示任何格式的数字内容,将来还可以表示音频、视频等等。 前端在展示图文混排文档时,需要从文档中获取所有的协议,并且提取出 rId,然后根据 rId 获取图片的原链接,最终把协议替换成原链接。

缩略图服务

PRS 为签名过的图片提供缩略图服务。

Endpoint

https://dev.press.one/thumbnail?width=${width}&url=${url}

参数说明

  • width / height :图片要缩放到的宽度 / 高度,任选其一,1-1500 的整数,请注意 2x 及 3x 屏幕显示下应乘以相应倍数;
  • url :图片链接,当前只会信任 static.press.one 与 storage.googleapis.com/pressone 域;
  • quality :JPEG 格式图片质量,1-100 的整数,越大则图片质量越高,默认为 80;
  • compression :PNG 压缩级别,1-10 的整数,越大则压缩率越高,默认为 6;
  • force :当指定尺寸超过原始尺寸时,添加该参数会返回指定尺寸图片,否则会返回原始尺寸图片;

Example

https://dev.press.one/thumbnail?url=https://static.press.one/9e/ef/9eef3cd927eaaab871963d4658a49d89.png&width=100

← 获取数字签名合约相关 →
  • 签名文件
  • 根据 rId 获取文件
  • 根据 msghash 获取文件
  • Markdown 嵌入图片签名文件
  • 缩略图服务
文档
介绍基础知识创建 DApp创建合约
社区
TwitterMedium微信公众号开发者论坛
更多
官方博客GitHub
Copyright © 2023 PRESSone