package
1.0.2
Repository: https://github.com/bpfs/defs.git
Documentation: pkg.go.dev

# Functions

获取压缩公钥.
从压缩公钥解压.
DisasmString 将反汇编脚本格式化为一行打印。 当脚本解析失败时,返回的字符串将包含失败发生点之前的反汇编脚本,并附加字符串'[error]'。 此外,如果调用者想要有关失败的更多信息,则会返回脚本解析失败的原因。 注意:该函数仅对0版本脚本有效。 由于该函数不接受脚本版本,因此其他脚本版本的结果未定义。.
反汇编脚本并以易读的格式返回.
ExtractPubKeyFromP2PKScriptToECDSA 从P2PK脚本中提取ECDSA公钥.
ExtractPubKeyFromP2PKScriptToRSA 从P2PK脚本中提取RSA公钥.
ExtractPubKeyHashFromP2PKScript 从 P2PK 脚本中提取公钥哈希。 参数 p2pkScript 是 P2PK 公钥脚本的字节表示。 返回公钥的哈希值。.
ExtractPubKeyHashFromScript 从P2PKH提取公钥哈希.
如果脚本采用标准支付公钥哈希 (P2PKH) 格式,则 IsPayToPubKeyHash 返回 true,否则返回 false。.
MakeScriptNum 将传递的序列化字节解释为编码整数,并将结果作为脚本编号返回。 由于共识规则规定解释为 int 的序列化字节只允许在最大字节数确定的范围内,因此在每个操作码的基础上,当提供的字节导致超出范围的数字时,将返回错误 那个范围的。 特别是,绝大多数处理数值的操作码的范围仅限于 4 个字节,因此会将该值传递给此函数,从而产生 [-2^31 + 1, 2^31 - 1] 的允许范围。 如果对编码的额外检查确定它没有用尽可能小的字节数表示或者是负 0 编码 [0x80],则 requireMinimal 标志会导致返回错误。 例如,考虑数字 127。它可以编码为 [0x7f]、[0x7f 0x00]、[0x7f 0x00 0x00 ...] 等。除了 [0x7f] 之外的所有形式都将在启用 requireMinimal 的情况下返回错误。 scriptNumLen 是在返回 ErrStackNumberTooBig 之前编码值可以达到的最大字节数。 这有效地限制了允许值的范围。 警告:如果传递大于 maxScriptNumLen 的值,应格外小心,这可能导致加法和乘法溢出。 有关示例编码,请参阅 Bytes 函数文档。.
MakeScriptTokenizer 返回脚本标记生成器的新实例。 传递不受支持的脚本版本将导致返回的标记生成器立即相应地设置错误。 有关更多详细信息,请参阅 ScriptTokenizer 的文档。.
NewScriptBuilder 返回脚本生成器的新实例。 有关详细信息,请参阅 ScriptBuilder。.
NewSigCache 创建并初始化一个新的 SigCache 实例。 参数 'maxEntries' 表示在任何特定时刻,SigCache中允许存在的最大条目数。 当新条目会导致缓存中的条目数超过最大值时,将随机逐出条目以腾出空间。.
VerifyScriptPubKeyHash 验证脚本中的公钥哈希是否与给定的PubKeyHash匹配.
WithScriptAllocSize 指定脚本生成器的支持数组的初始大小。.

# Constants

HashSize 定义了哈希值的大小,通常是双重 SHA256 哈希的大小。.
可推入堆栈的最大字节数。.
MaxScriptSize 是原始脚本允许的最大长度。.
0 - 表示数字0.
81 - 表示数字1.
79 - 表示数字-1.
172 - 验证交易签名.
1 - 接下来的1个字节是数据.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
2.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
3.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
4.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
5.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
6.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
7.
70.
71.
72.
73.
74.
75.
8.
9.
118 - 复制栈顶元素.
136 - 相等验证,等同于OP_EQUAL OP_VERIFY组合.
169 - 对栈顶元素进行SHA-256然后RIPEMD-160哈希.
76 - 接下来的一个字节长度值表示的字节数是数据.
77 - 接下来的两个字节长度值表示的字节数是数据.
78 - 接下来的四个字节长度值表示的字节数是数据.
Conditional 执行常数。.
Conditional 执行常数。.
Conditional 执行常数。.

# Structs

Debugger 和 TestFramework 提供调试和测试的功能。.
Engine 是一个通用脚本执行引擎的结构体。.
ResourceLimiter 用于限制脚本执行的资源使用。.
ScriptBuilder 提供了构建自定义脚本的工具。 它允许您在遵守规范编码的同时推送操作码、整数和数据。 一般来说,它不能确保脚本正确执行,但是任何超出脚本引擎允许的最大限制并因此保证不执行的数据推送都不会被推送,并将导致脚本函数返回错误。 例如,以下代码将构建一个 2-of-3 多重签名脚本,用于支付脚本哈希(尽管在这种情况下 MultiSigScript() 是生成脚本的更好选择): builder := NewScriptBuilder() builder.AddOp(OP_2).AddData(pubKey1).AddData(pubKey2) builder.AddData(pubKey3).AddOp(OP_3) builder.AddOp(OP_CHECKMULTISIG) script, err := builder.Script() if err != nil { // Handle the error.
ScriptTokenizer 提供了一种无需创建分配即可轻松高效地标记交易脚本的工具。 每个连续的操作码都使用 Next 函数进行解析,迭代完成后返回 false,这可能是由于成功标记整个脚本或遇到解析错误。 在失败的情况下,可以使用Err函数来获取具体的解析错误。 成功解析操作码后,可以分别通过 Opcode 和 Data 函数获取与其关联的操作码和数据。 ByteIndex 函数可用于获取分词器在原始脚本中的当前偏移量。.
SigCache 实现了一个结合了Schnorr和ECDSA签名验证的缓存,采用随机条目驱逐策略。 只有有效的签名才会被添加到缓存中。SigCache的好处有两方面: 首先,使用SigCache可以缓解一种DoS攻击,攻击会导致受害者的客户端由于处理攻击者 构造的无效交易时触发的最坏情况行为而挂起。关于被缓解的DoS攻击的详细描述可以在此处找到: https://bitslogrus.wordpress.com/2013/01/23/fixed-bitcoin-vulnerability-explanation-why-the-signature-cache-is-a-dos-protection/。 其次,使用SigCache引入了签名验证优化,如果交易已经在mempool中被看到并验证过, 则可以加速区块中交易的验证。.
TaprootContext 和 WitnessContext 提供了对应功能的上下文信息。.
No description provided by the author
No description provided by the author

# Interfaces

CryptoAlgorithm 定义了加密算法的接口。.
ExecutionEnvironment 定义了脚本执行环境的接口,允许脚本与外部系统交互。.

# Type aliases

ErrScriptNotCanonical 标识非规范脚本。 调用者可以使用类型断言来检测此错误类型。.
Hash 用于多个消息和常见结构中,通常代表数据的双重 sha256 哈希。.
ScriptBuilderOpt 是一种函数选项类型,用于修改 ScriptBuilder 的初始化。.
ScriptFlags 是一个位掩码,定义执行脚本对时将完成的附加操作或测试。.