review-script-template
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseReview Script Template
审查脚本模板
Review and validate script template implementations in ts-templates for correctness and best practices.
审查并验证ts-templates中的脚本模板实现是否正确且符合最佳实践。
When to Use
使用场景
- Review a new template before merging
- Audit existing template implementations
- Validate template follows ts-templates patterns
- Check for common implementation errors
- 合并前审查新模板
- 审计现有模板实现
- 验证模板是否遵循ts-templates模式
- 检查常见的实现错误
Review Checklist
审查检查清单
Structure Validation
结构验证
- File located in appropriate subdirectory
src/template/ - Implements interface from @bsv/sdk
ScriptTemplate - Exports PREFIX constant
- Exports Data interface with all protocol fields
- Default export is the template class
- Added to mod.ts exports (class + types)
- 文件位于对应的子目录中
src/template/ - 实现了@bsv/sdk中的接口
ScriptTemplate - 导出了PREFIX常量
- 导出包含所有协议字段的Data接口
- 默认导出为模板类
- 已添加到mod.ts的导出中(类 + 类型)
Interface Requirements
接口要求
- property is
datapublic readonly - Constructor accepts Data interface
- field for protocol position
bitcomIndex?: number - field for verification status
valid?: boolean
- 属性为
datapublic readonly - 构造函数接受Data接口
- 包含字段用于指定协议位置
bitcomIndex?: number - 包含字段用于标识验证状态
valid?: boolean
Required Methods
必填方法
| Method | Purpose | Requirements |
|---|---|---|
| Static. Parse from BitComDecoded | Return array of instances |
| Generate LockingScript | Use BitCom for OP_RETURN protocols |
| Generate UnlockingScript | Throw if not applicable |
| Check signature validity | Return boolean |
| 方法 | 用途 | 要求 |
|---|---|---|
| 静态方法。从BitComDecoded中解析 | 返回实例数组 |
| 生成LockingScript | 对OP_RETURN协议使用BitCom |
| 生成UnlockingScript | 若不适用则抛出异常 |
| 检查签名有效性 | 返回布尔值 |
Code Quality
代码质量
- Uses directly (no toASM().split())
script.chunks - Uses @bsv/sdk Utils (no Buffer, TextEncoder)
- Proper error handling in decode()
- No hardcoded magic numbers
- Consistent with other templates in repo
- 直接使用(不使用toASM().split())
script.chunks - 使用@bsv/sdk的Utils(不使用Buffer、TextEncoder)
- decode()中有适当的错误处理
- 无硬编码的魔法数值
- 与仓库中的其他模板保持一致
Chunk Parsing Review
块解析审查
Correct pattern:
typescript
const script = Script.fromBinary(protocol.script)
const chunks = script.chunks
const field = Utils.toUTF8(chunks[0].data ?? [])Incorrect patterns to flag:
typescript
// BAD: String splitting
const parts = script.toASM().split(' ')
// BAD: Buffer usage
const field = Buffer.from(chunks[0].data).toString()
// BAD: TextEncoder
new TextEncoder().encode(field)正确模式:
typescript
const script = Script.fromBinary(protocol.script)
const chunks = script.chunks
const field = Utils.toUTF8(chunks[0].data ?? [])需要标记的错误模式:
typescript
// BAD: String splitting
const parts = script.toASM().split(' ')
// BAD: Buffer usage
const field = Buffer.from(chunks[0].data).toString()
// BAD: TextEncoder
new TextEncoder().encode(field)Utils Usage Review
Utils使用审查
Verify correct Utils functions:
| Operation | Correct | Incorrect |
|---|---|---|
| String → bytes | | |
| Bytes → string | | |
| Bytes → hex | | |
| Bytes → base64 | | |
验证是否正确使用Utils函数:
| 操作 | 正确用法 | 错误用法 |
|---|---|---|
| 字符串 → 字节 | | |
| 字节 → 字符串 | | |
| 字节 → 十六进制 | | |
| 字节 → Base64 | | |
Signature Verification Review
签名验证审查
For protocols with signatures:
- Uses BSM.sign() for signing
- Tries all 4 recovery factors (0-3)
- Uses Signature.fromCompact() for decoding
- Verifies address matches recovered public key
- Sets field after verification
valid
对于带有签名的协议:
- 使用BSM.sign()进行签名
- 尝试所有4种恢复因子(0-3)
- 使用Signature.fromCompact()进行解码
- 验证地址与恢复的公钥匹配
- 验证后设置字段
valid
BitCom Integration Review
BitCom集成审查
For OP_RETURN protocols:
- Uses BitCom class for lock()
- Creates Protocol array with correct structure
- Proper pipe delimiter handling
- decode() accepts BitComDecoded parameter
对于OP_RETURN协议:
- 在lock()中使用BitCom类
- 创建结构正确的Protocol数组
- 正确处理管道分隔符
- decode()接受BitComDecoded参数
Common Issues
常见问题
Issue 1: Missing Null Checks
问题1:缺少空值检查
typescript
// BAD: Can throw on missing data
const field = Utils.toUTF8(chunks[0].data)
// GOOD: Handle missing data
const field = Utils.toUTF8(chunks[0].data ?? [])typescript
// BAD: Can throw on missing data
const field = Utils.toUTF8(chunks[0].data)
// GOOD: Handle missing data
const field = Utils.toUTF8(chunks[0].data ?? [])Issue 2: Wrong Chunk Index
问题2:块索引错误
Verify chunk indices match protocol specification:
- Check protocol documentation for field order
- Account for protocol prefix being separate
验证块索引是否符合协议规范:
- 查看协议文档确认字段顺序
- 注意协议前缀是单独的部分
Issue 3: Incomplete Error Handling
问题3:错误处理不完整
typescript
// BAD: Crashes on parse error
static decode(bitcom: BitComDecoded): Protocol[] {
const script = Script.fromBinary(protocol.script) // Can throw!
}
// GOOD: Handle parse errors
static decode(bitcom: BitComDecoded): Protocol[] {
try {
const script = Script.fromBinary(protocol.script)
} catch {
continue // Skip invalid protocols
}
}typescript
// BAD: Crashes on parse error
static decode(bitcom: BitComDecoded): Protocol[] {
const script = Script.fromBinary(protocol.script) // Can throw!
}
// GOOD: Handle parse errors
static decode(bitcom: BitComDecoded): Protocol[] {
try {
const script = Script.fromBinary(protocol.script)
} catch {
continue // Skip invalid protocols
}
}Issue 4: Missing mod.ts Export
问题4:缺少mod.ts导出
Check that mod.ts includes:
typescript
export { default as Protocol, PREFIX } from './src/template/...'
export type { ProtocolData, ProtocolOptions } from './src/template/...'检查mod.ts是否包含:
typescript
export { default as Protocol, PREFIX } from './src/template/...'
export type { ProtocolData, ProtocolOptions } from './src/template/...'Review Output Format
审查输出格式
Provide structured feedback:
markdown
undefined提供结构化反馈:
markdown
undefinedTemplate Review: [TemplateName]
Template Review: [TemplateName]
Structure: ✅ PASS / ❌ FAIL
Structure: ✅ PASS / ❌ FAIL
- [Details]
- [Details]
Methods: ✅ PASS / ❌ FAIL
Methods: ✅ PASS / ❌ FAIL
- [Details]
- [Details]
Code Quality: ✅ PASS / ❌ FAIL
Code Quality: ✅ PASS / ❌ FAIL
- [Details]
- [Details]
Issues Found
Issues Found
- [Issue description and fix]
- [Issue description and fix]
- [Issue description and fix]
- [Issue description and fix]
Recommendations
Recommendations
- [Optional improvements]
undefined- [Optional improvements]
undefinedAdditional Resources
额外资源
Reference Files
参考文件
- - Extended validation criteria
references/checklist-detailed.md - - Known issues and fixes
references/common-bugs.md
- - 扩展验证标准
references/checklist-detailed.md - - 已知问题及修复方案
references/common-bugs.md