| 855 | } |
| 856 | |
| 857 | func (s *Script) PushMultData(data [][]byte) error { |
| 858 | for _, e := range data { |
| 859 | dataLen := len(e) |
| 860 | if dataLen < opcodes.OP_PUSHDATA1 { |
| 861 | s.data = append(s.data, byte(dataLen)) |
| 862 | } else if dataLen <= 0xff { |
| 863 | s.data = append(s.data, opcodes.OP_PUSHDATA1, byte(dataLen)) |
| 864 | } else if dataLen <= 0xffff { |
| 865 | s.data = append(s.data, opcodes.OP_PUSHDATA2) |
| 866 | buf := make([]byte, 2) |
| 867 | binary.LittleEndian.PutUint16(buf, uint16(dataLen)) |
| 868 | s.data = append(s.data, buf...) |
| 869 | } else { |
| 870 | s.data = append(s.data, opcodes.OP_PUSHDATA4) |
| 871 | buf := make([]byte, 4) |
| 872 | binary.LittleEndian.PutUint32(buf, uint32(dataLen)) |
| 873 | s.data = append(s.data, buf...) |
| 874 | } |
| 875 | s.data = append(s.data, e...) |
| 876 | } |
| 877 | err := s.convertOPS() |
| 878 | return err |
| 879 | } |
| 880 | |
| 881 | func (s *Script) Bytes() []byte { |
| 882 | return s.data |