diff --git a/manager/eris-mint/evm/vm.go b/manager/eris-mint/evm/vm.go
index 7f0c7c05509821bde984ce6b8500cb6417263d1d..45438f7f2f2677f6dbb9014e7eb3da132b739f88 100644
--- a/manager/eris-mint/evm/vm.go
+++ b/manager/eris-mint/evm/vm.go
@@ -147,6 +147,30 @@ func (vm *VM) Call(caller, callee *Account, code, input []byte, value int64, gas
 	return
 }
 
+// DelegateCall is executed by the DELEGATECALL opcode, introduced as off Ethereum Homestead.
+// The intent of delegate call is to run the code of the callee in the storage context of the caller;
+// while preserving the original caller to the previous callee.
+// Different to the normal CALL or CALLCODE, the value does not need to be transferred to the callee.
+func (vm *VM) DelegateCall(caller, callee *Account, code, input []byte, value int64, gas *int64) (output []byte, err error) {
+	
+	exception := new(string)
+	// fire the post call event (including exception if applicable)
+	defer vm.fireCallEvent(exception, &output, caller, callee, input, value, gas)
+	
+	// DelegateCall does not transfer the value to the callee.
+
+	if len(code) > 0 {
+		vm.callDepth += 1
+		output, err = vm.call(caller, callee, code, input, value, gas)
+		vm.callDepth -= 1
+		if err != nil {
+			*exception = err.Error()
+		}
+	}
+
+	return
+}
+
 // Try to deduct gasToUse from gasLeft.  If ok return false, otherwise
 // set err and return true.
 func useGasNegative(gasLeft *int64, gasToUse int64, err *error) bool {