code: func opcodeIfDup(op *parsedOpcode, vm *Engine) error {
  	so, err := vm.dstack.PeekByteArray(0)
  	if err != nil {
  		return err
  	}
  
  	// Push copy of data iff it isn't zero
  	if asBool(so) {
  		vm.dstack.PushByteArray(so)
  	}
  
  	return nil
  }
docs: // opcodeIfDup duplicates the top item of the stack if it is not zero.
  //
  // Stack transformation (x1==0): [... x1] -> [... x1]
  // Stack transformation (x1!=0): [... x1] -> [... x1 x1]