CodingBasic - Work with Profiles
您可以使用blockstack.js库在Stack区块链上创建和注册一个ID。本节描述Profile对象,包含以下主题:
关于配置文件
创建一个配置文件
将概要文件签署为单个令牌
验证单个令牌
从令牌文件中恢复配置文件
验证配置文件模式
验证证明
如何验证证明
添加额外的社会帐户验证服务
关于配置文件
配置文件数据使用用户选择的存储提供程序上的Gaia存储。一个概要文件的例子。使用Blockstack提供的存储json文件URL:
https://gaia.blockstack.org/hub/1EeZtGNdFrVB2AgLFsZbyBCF7UTZcEWhHk/profile.json
按照以下步骤为blockstack ID创建和注册配置文件:
1.创建一个JSON配置文件对象
2.将概要文件拆分为令牌,对令牌进行签名,并将它们放入令牌文件中
3.创建一个指向概要文件令牌文件的web位置的区域文件
帐户可以有一个或多个证明。证据存储在用户个人资料的帐户密钥下
"account": [
{
"@type": “Account”,
"service": “twitter”,
"identifier": “naval”,
"proofType": “http”,
"proofUrl": "https://twitter.com/naval/status/12345678901234567890”
}
]
创建一个配置文件
const profileOfNaval = {
"@context": "http://schema.org/“,
"@type": “Person”,
"name": "Naval Ravikant”,
"description": "Co-founder of AngelList”
}
将概要文件签署为单个令牌
import { makeECPrivateKey, wrapProfileToken, Person } from ‘blockstack’
const privateKey = makeECPrivateKey()
const person = new Person(profileOfNaval)
const token = person.toToken(privateKey)
const tokenFile = [wrapProfileToken(token)]
验证单个令牌
import { verifyProfileToken } from ‘blockstack’
try {
const decodedToken = verifyProfileToken(tokenFile[0].token, publicKey)
} catch(e) {
console.log(e)
}
从令牌文件中恢复配置文件
const recoveredProfile = Person.fromToken(tokenFile, publicKey)
验证模式配置文件
const validationResults = Person.validateSchema(recoveredProfile)
验证证明
import { validateProofs } from ‘blockstack’
const domainName = “naval.id”
validateProofs(profile, domainName).then((proofs) => {
console.log(proofs)
})
如何验证证明
validateproof函数通过获取proof URL并验证proof消息来检查概要文件中列出的每个证明。目前支持的验证服务:
- Hacker News
- GitHub
证明函件必须采用以下形式:
Verifying my Blockstack ID is secured with the address
1EeZtGNdFrVB2AgLFsZbyBCF7UTZcEWhHk
证明信息还必须出现在特定于每种类型的社交媒体账户的证明页面的必要位置。
发送验证消息的帐户必须与用户配置文件中声明的帐户标识符/用户名完全匹配。validateproof函数将根据服务的不同,在证明的正文中或在证明URL中检查这一点。
添加额外的社会帐户验证服务
可以扩展服务类,为其他社会帐户类型提供验证服务。您将需要覆盖getProofStatement(searchText: string)方法,该方法解析证明体并返回证明消息文本。此外,通过实现getProofIdentity(searchText: string)并设置shouldValidateIdentityInBody()返回true,应该在proof URL或主体中验证所声明的标识符。
下面的代码片段使用proof页面中的meta标记来检索proof消息。
static getProofStatement(searchText: string) {
const('meta[property="og:description”]’)
.attr(‘content’)
if (statement !== undefined && statement.split(':').length > 1) {
return statement.split(':')[1].trim().replace('“', '').replace('”', ‘’)
} else {
return ‘'
}
}
![](https://img.haomeiwen.com/i3420049/fc68268c618a26b7.png)
Rebase是一个全球性的去中心化组织,致力于帮助极客更好地利用科技创新,推动社会变革。Rebase社区聚集着一群拥有不同技能的人,他们通过贡献自己的时间和智慧来为社区的发展添砖加瓦,用实际的行动来尝试社区和社会自治的可能。
招募志愿者
Rebase作为一个开放的社区,我们欢迎不同的人加入我们,你将有机会:
•探索新的有趣的项目
•认识一群志同道合的人
•接触到行业内最前沿的知识
•与技术领袖交流的机会
•结识未来的创业伙伴
参与的形式可以是多种多样的,哪怕不在同一个城市,在这里你可以:
•策划一场知识密度极高的分享会
•组织一次酷炫的线下区块链workshop
•设计一款脑洞大开的海报
•开发一个方便易用的工具
更多好玩的东西,我们一起探索。