# neo-thinsdk-ts
**Repository Path**: lightsever/neo-thinsdk-ts
## Basic Information
- **Project Name**: neo-thinsdk-ts
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-06-03
- **Last Updated**: 2021-06-03
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Neo-ThinSDK(typesciprt)
Neo-ThinSDK 使用MIT开源协议
使用typescript开发,主要功能是 为 NEO网页钱包开发提供必须的加密方法。
由于我们的产品使用typescript开发,neonjs虽然很棒,但是他是js的源码,不符合我们的审美
## 查看例子
http://sdk.nel.group/
## Neo-ThinSDK 功能
### 签名算法
WIF<->私钥->公钥->公钥->用户地址验证脚本->脚本散列<->Address
一系列计算
签名 验签 计算
### 钱包相关
NEP2私钥加密一系列计算
NEP6钱包文件一系列计算
### 交易相关
交易读写工具
### 脚本相关
脚本反编译
脚本生成器
## 脚本生成规范
NeoThinSDK增加了一个方法
public EmitParamJson(param: any): ScriptBuilder {
if (typeof param === "number")//bool 或小整数
{
this.EmitPushNumber(new Neo.BigInteger(param as number));
}
else if (typeof param === "boolean") {
this.EmitPushBool(param as boolean);
}
else if (typeof param === "object") {
var list = param as any[];
for (var i = list.length - 1; i >= 0; i--) {
this.EmitParamJson(list[i]);
}
this.EmitPushNumber(new Neo.BigInteger(list.length));
this.Emit(ThinNeo.OpCode.PACK);
}
else if (typeof param === "string")//复杂格式
{
}
else {
throw new Error("error type:" + typeof param);
}
return this;
}
可以使用一个json直接配置脚本的参数,提高了便利性,支持嵌套
对于很多复杂的参数类型,直接对string定义了一套规范进行支持
//如果参数为string,其实是特殊值
//(string) or(str) 开头,表示是个字符串,utf8编码为bytes
//(bytes) or([])开头,表示就是一个bytearray
//(address) or(addr)开头,表示是一个地址,转换为脚本hash
//(integer) or(int) 开头,表示是一个大整数
//(hexinteger) or (hexint) or (hex) 开头,表示是一个16进制表示的大整数,转换为bytes就是反序
//(int256) or (hex256) 开头,表示是一个定长的256位 16进制大整数
//(int160) or (hex160) 开头,表示是一个定长的160位 16进制大整数
比如
[
"(str)name",
[
"(bytes)0x112233",
"(hex160)0x1122334455667788990011223344556677889900"
]
]
## 依赖
Neo-thinSDK依赖这些项目
[google CryptoJS](https://code.google.com/archive/p/crypto-js/)
的aes部分
[WEbScrypt 项目](https://github.com/EtherDream/WebScrypt)