}
}
+func TestParseContractHash(t *testing.T) {
+ tests := []struct {
+ program string
+ expected string
+ }{
+ {
+ //call BCRP script format: OP_1 + OP_DATA_32 + SHA3-256(contract)
+ program: "5120605f9b8e978bb3956d729047e556cdf4b56238348d4293ad9afef376462063c5",
+ expected: "605f9b8e978bb3956d729047e556cdf4b56238348d4293ad9afef376462063c5",
+ },
+ }
+
+ for i, test := range tests {
+ program, err := hex.DecodeString(test.program)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ hash, err := ParseContractHash(program)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ expected := hex.EncodeToString(hash[:])
+ if expected != test.expected {
+ t.Errorf("TestParseContractHash #%d failed: got %v want %v", i, expected, test.expected)
+ }
+ }
+}
for _, tx := range block.Transactions {
for _, output := range tx.Outputs {
program := output.ControlProgram
- if !bcrp.IsBCRPScript(program) {
- continue
+ if bcrp.IsBCRPScript(program) {
+ var hash [32]byte
+ sha3pool.Sum256(hash[:], program)
+ view.AttachEntries[hash] = append(tx.ID.Bytes(), program...)
}
- var hash [32]byte
- sha3pool.Sum256(hash[:], program)
- view.AttachEntries[hash] = append(tx.ID.Bytes(), program...)
}
}
return nil
for _, tx := range block.Transactions {
for _, output := range tx.Outputs {
program := output.ControlProgram
- if !bcrp.IsBCRPScript(program) {
- continue
+ if bcrp.IsBCRPScript(program) {
+ var hash [32]byte
+ sha3pool.Sum256(hash[:], program)
+ view.DetachEntries[hash] = append(tx.ID.Bytes(), program...)
}
- var hash [32]byte
- sha3pool.Sum256(hash[:], program)
- view.DetachEntries[hash] = append(tx.ID.Bytes(), program...)
}
}
return nil