code: def put_zonefiles(hostport, zonefile_data_list, timeout=30, my_hostport=None, proxy=None):
      
      assert hostport or proxy, 'need either hostport or proxy'
  
      saved_schema = {
          'type': 'object',
          'properties': {
              'saved': {
                  'type': 'array',
                  'items': {
                      'type': 'integer',
                      'minimum': 0,
                      'maximum': 1,
                  },
                  'minItems': len(zonefile_data_list),
                  'maxItems': len(zonefile_data_list)
              },
          },
          'required': [
              'saved'
          ]
      }
  
      schema = json_response_schema( saved_schema )
      
      if proxy is None:
          proxy = connect_hostport(hostport)
  
      push_info = None
      try:
          push_info = proxy.put_zonefiles(zonefile_data_list)
          push_info = json_validate(schema, push_info)
          if json_is_error(push_info):
              return push_info
  
      except socket.timeout:
          log.error("Connection timed out")
          resp = {'error': 'Connection to remote host timed out.', 'http_status': 503}
          return resp
  
      except socket.error as se:
          log.error("Connection error {}".format(se.errno))
          resp = {'error': 'Connection to remote host failed.', 'http_status': 502}
          return resp
  
      except ValidationError as e:
          if BLOCKSTACK_DEBUG:
              log.exception(e)
  
          resp = {'error': 'Server response did not match expected schema.  You are likely communicating with an out-of-date Blockstack node.', 'http_status': 502}
          return resp
  
      except Exception as ee:
          if BLOCKSTACK_DEBUG:
              log.exception(ee)
  
          log.error("Caught exception while connecting to Blockstack node: {}".format(ee))
          resp = {'error': 'Failed to contact Blockstack node.  Try again with `--debug`.', 'http_status': 500}
          return resp
  
      return push_info
docs: Push one or more zonefiles to the given server.
      Each zone file in the list must be base64-encoded
  
      Return {'status': True, 'saved': [...]} on success
      Return {'error': ...} on error