| 263 | } |
| 264 | |
| 265 | func rot(vm *virtualMachine, n int64) error { |
| 266 | if n < 1 { |
| 267 | return ErrBadValue |
| 268 | } |
| 269 | if int64(len(vm.dataStack)) < n { |
| 270 | return ErrDataStackUnderflow |
| 271 | } |
| 272 | index := int64(len(vm.dataStack)) - n |
| 273 | newStack := make([][]byte, 0, len(vm.dataStack)) |
| 274 | newStack = append(newStack, vm.dataStack[:index]...) |
| 275 | newStack = append(newStack, vm.dataStack[index+1:]...) |
| 276 | newStack = append(newStack, vm.dataStack[index]) |
| 277 | vm.dataStack = newStack |
| 278 | return nil |
| 279 | } |
| 280 | |
| 281 | func opSwap(vm *virtualMachine) error { |
| 282 | err := vm.applyCost(1) |