code: function (contractName, contract, contracts, params, funAbi, callback, callbackStep, callbackDeployLibrary) {
      this.encodeParams(params, funAbi, (error, encodedParam) => {
        if (error) return callback(error)
        var dataHex = ''
        var contractBytecode = contract.evm.bytecode.object
        var bytecodeToDeploy = contract.evm.bytecode.object
        if (bytecodeToDeploy.indexOf('_') >= 0) {
          this.linkBytecode(contract, contracts, (err, bytecode) => {
            if (err) {
              callback('Error deploying required libraries: ' + err)
            } else {
              bytecodeToDeploy = bytecode + dataHex
              return callback(null, {dataHex: bytecodeToDeploy, funAbi, funArgs: encodedParam.funArgs, contractBytecode, contractName: contractName})
            }
          }, callbackStep, callbackDeployLibrary)
          return
        } else {
          dataHex = bytecodeToDeploy + encodedParam.dataHex
        }
        callback(null, {dataHex: bytecodeToDeploy, funAbi, funArgs: encodedParam.funArgs, contractBytecode, contractName: contractName})
      })
    }
docs: encode constructor creation and deploy librairies if needed
  
  @param {String} contractName    - current contract name
  @param {Object} contract    - input paramater of the function to call
  @param {Object} contracts    - map of all compiled contracts.
  @param {Object} params    - input paramater of the function to call
  @param {Object} funAbi    - abi definition of the function to call. null if building data for the ctor.
  @param {Function} callback    - callback
  @param {Function} callbackStep  - callbackStep
  @param {Function} callbackDeployLibrary  - callbackDeployLibrary
  @param {Function} callback    - callback